700
How can I filter the check-boxes (method 1)

with AxGrid1 do
begin
	with (Columns.Add('Check') as EXGRIDLib.Column) do
	begin
		with Editor do
		begin
			EditType := EXGRIDLib.EditTypeEnum.CheckValueType;
			Option[EXGRIDLib.EditorOptionEnum.exCheckValue2] := TObject(1);
		end;
		DisplayFilterButton := True;
		DisplayFilterPattern := False;
		FilterType := EXGRIDLib.FilterTypeEnum.exCheck;
	end;
	with Items do
	begin
		AddItem(TObject(True));
		AddItem(TObject(True));
		AddItem(TObject(False));
		AddItem(TObject(True));
		AddItem(TObject(False));
		AddItem(TObject(True));
		AddItem(TObject(False));
	end;
end
699
How can add a button to control

// ButtonClick event - Occurs when user clicks on the cell's button.
procedure TWinForm1.AxGrid1_ButtonClick(sender: System.Object; e: AxEXGRIDLib._IGridEvents_ButtonClickEvent);
begin
	with AxGrid1 do
	begin
		OutputDebugString( 'ButtonClick' );
		OutputDebugString( Items.CellCaption[TObject(e.item),TObject(e.colIndex)] );
		OutputDebugString( e.key );
	end
end;

with AxGrid1 do
begin
	BeginUpdate();
	DefaultItemHeight := 22;
	HeaderHeight := 22;
	Appearance := EXGRIDLib.AppearanceEnum.None2;
	DrawGridLines := EXGRIDLib.GridLinesEnum.exRowLines;
	ScrollBySingleLine := False;
	Images('gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTql' + 
	'Vq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0' + 
	'ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yN' + 
	'AOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=');
	set_HTMLPicture('pic1','c:\exontrol\images\auction.gif');
	with Columns do
	begin
		with (Add('Type') as EXGRIDLib.Column) do
		begin
			Width := 48;
			Def[EXGRIDLib.DefColumnEnum.exCellValueFormat] := TObject(1);
		end;
		with (Add('Appearance') as EXGRIDLib.Column) do
		begin
			Def[EXGRIDLib.DefColumnEnum.exCellValueFormat] := TObject(1);
			Alignment := EXGRIDLib.AlignmentEnum.CenterAlignment;
			HeaderAlignment := EXGRIDLib.AlignmentEnum.CenterAlignment;
		end;
	end;
	with Items do
	begin
		h := AddItem('Items.<b>CellHasButton</b> property');
		CellValue[TObject(h),TObject(1)] := 'Button <b>1</b>';
		CellHasButton[TObject(h),TObject(1)] := True;
		h := AddItem('Items.<b>CellButtonAutoWidth</b> property');
		CellValue[TObject(h),TObject(1)] := ' Button <b>2</b> ';
		CellHasButton[TObject(h),TObject(1)] := True;
		CellButtonAutoWidth[TObject(h),TObject(1)] := True;
		h := AddItem('Items.<b>CellHasButton</b> property');
		CellValue[TObject(h),TObject(1)] := ' <img>2</img>Button <b>3</b> ';
		CellHasButton[TObject(h),TObject(1)] := True;
		CellButtonAutoWidth[TObject(h),TObject(1)] := True;
		h := AddItem('Items.<b>CellHasButton</b> property');
		ItemHeight[h] := 32;
		CellValue[TObject(h),TObject(1)] := ' <img>2</img>Button <b>4</b> <img>pic1</img> ';
		CellHasButton[TObject(h),TObject(1)] := True;
		CellButtonAutoWidth[TObject(h),TObject(1)] := True;
		h := AddItem('Items.<b>CellHasButton</b> in splitted cells');
		CellValue[TObject(h),TObject(1)] := ' Button <b>5.1</b> ';
		CellHasButton[TObject(h),TObject(1)] := True;
		CellButtonAutoWidth[TObject(h),TObject(1)] := True;
		s := SplitCell[TObject(h),TObject(1)];
		CellValue[TObject(0),TObject(s)] := ' Button <b>5.2</b> ';
		CellHasButton[TObject(0),TObject(s)] := True;
		CellButtonAutoWidth[TObject(0),TObject(s)] := True;
		h := AddItem('Column.<b>Editor</b>, Items.<b>CellEditor</b>');
		CellValue[TObject(h),TObject(1)] := 'Visible when clicking the cell';
		with CellEditor[TObject(h),TObject(1)] do
		begin
			EditType := EXGRIDLib.EditTypeEnum.EditType;
			AddButton('B1',TObject(1),TObject(0),'This is a bit of text that''s shown when the cursor hovers the button B1',Nil,Nil);
			AddButton('B3',TObject(2),TObject(1),'This is a bit of text that''s shown when the cursor hovers the button B3',Nil,Nil);
			AddButton('B4',TObject(1),TObject(1),'This is a bit of text that''s shown when the cursor hovers the button B4',Nil,Nil);
			ButtonWidth := 24;
		end;
		h := AddItem('Column.<b>Editor</b>, Items.<b>CellEditor</b>');
		CellValue[TObject(h),TObject(1)] := TObject(3);
		with CellEditor[TObject(h),TObject(1)] do
		begin
			EditType := EXGRIDLib.EditTypeEnum.CheckListType;
			AddItem(1,'Flag 1',Nil);
			AddItem(2,'Flag 2',Nil);
			AddItem(4,'Flag 4',Nil);
			AddItem(8,'Flag 8',Nil);
			AddButton('C1',TObject(1),TObject(0),'This is a bit of text that''s shown when the cursor hovers the button C1',Nil,Nil);
			AddButton('C3',TObject(2),TObject(0),'This is a bit of text that''s shown when the cursor hovers the button C2',Nil,Nil);
			AddButton('C4',TObject(1),TObject(0),'This is a bit of text that''s shown when the cursor hovers the button C3',Nil,Nil);
			ButtonWidth := 24;
		end;
	end;
	EndUpdate();
end
698
The item is not getting selected when clicking the cell's checkbox. What should I do

// CellStateChanged event - Fired after cell's state has been changed.
procedure TWinForm1.AxGrid1_CellStateChanged(sender: System.Object; e: AxEXGRIDLib._IGridEvents_CellStateChangedEvent);
begin
	with AxGrid1 do
	begin
		Items.SelectItem[e.item] := True;
	end
end;

with AxGrid1 do
begin
	(Columns.Add('Check') as EXGRIDLib.Column).Def[EXGRIDLib.DefColumnEnum.exCellHasCheckBox] := TObject(True);
	with Items do
	begin
		AddItem(TObject(0));
		AddItem(TObject(1));
		AddItem(TObject(2));
		AddItem(TObject(3));
	end;
end
697
Is it possible to limit the height of the item while resizing

// AddItem event - Occurs after a new Item has been inserted to Items collection.
procedure TWinForm1.AxGrid1_AddItem(sender: System.Object; e: AxEXGRIDLib._IGridEvents_AddItemEvent);
begin
	with AxGrid1 do
	begin
		Items.ItemMinHeight[e.item] := 18;
		Items.ItemMaxHeight[e.item] := 72;
	end
end;

with AxGrid1 do
begin
	BeginUpdate();
	ItemsAllowSizing := EXGRIDLib.ItemsAllowSizingEnum.exResizeItem;
	ScrollBySingleLine := False;
	BackColorAlternate := Color.FromArgb(240,240,240);
	Columns.Add('Names');
	with Items do
	begin
		AddItem('Mantel');
		AddItem('Mechanik');
		AddItem('Motor');
		AddItem('Murks');
		AddItem('Märchen');
		AddItem('Möhren');
		AddItem('Mühle');
	end;
	Columns.Item[TObject(0)].SortOrder := EXGRIDLib.SortOrderEnum.SortAscending;
	EndUpdate();
end
696
Is it possible to copy the hierarchy of the control using the GetItems method

with AxGrid1 do
begin
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exLinesAtRoot;
	Columns.Add('Def');
	with Items do
	begin
		h := AddItem('Root');
		InsertItem(h,Nil,'Child 1');
		InsertItem(h,Nil,'Child 2');
	end;
	PutItems(GetItems(TObject(-1)),Nil);
end
695
Is it possible to auto-numbering the children items but still keeps the position after filtering

with AxGrid1 do
begin
	BeginUpdate();
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exLinesAtRoot;
	with (Columns.Add('Items') as EXGRIDLib.Column) do
	begin
		DisplayFilterButton := True;
		FilterType := EXGRIDLib.FilterTypeEnum.exFilter;
		Filter := 'Child 2';
	end;
	with (Columns.Add('Pos.1') as EXGRIDLib.Column) do
	begin
		FormatColumn := '1 ropos ''''';
		Position := 0;
		Width := 32;
		AllowSizing := False;
	end;
	with (Columns.Add('Pos.2') as EXGRIDLib.Column) do
	begin
		FormatColumn := '1 ropos '':''';
		Position := 1;
		Width := 32;
		AllowSizing := False;
	end;
	with (Columns.Add('Pos.3') as EXGRIDLib.Column) do
	begin
		FormatColumn := '1 ropos '':|A-Z''';
		Position := 2;
		Width := 32;
		AllowSizing := False;
	end;
	with (Columns.Add('Pos.4') as EXGRIDLib.Column) do
	begin
		FormatColumn := '1 ropos ''|A-Z|''';
		Position := 3;
		Width := 32;
		AllowSizing := False;
	end;
	with (Columns.Add('Pos.5') as EXGRIDLib.Column) do
	begin
		FormatColumn := '''<font Tahoma;7>'' + 1 ropos ''-<b>||A-Z''';
		Def[EXGRIDLib.DefColumnEnum.exCellValueFormat] := TObject(1);
		Position := 4;
		Width := 32;
		AllowSizing := False;
	end;
	with (Columns.Add('Pos.6') as EXGRIDLib.Column) do
	begin
		FormatColumn := '''<b>''+ 1 ropos ''</b>:<fgcolor=FF0000>|A-Z|''';
		Def[EXGRIDLib.DefColumnEnum.exCellValueFormat] := TObject(1);
		Position := 5;
		Width := 48;
		AllowSizing := False;
	end;
	with Items do
	begin
		h := AddItem('Root 1');
		InsertItem(h,Nil,'Child 1');
		InsertItem(h,Nil,'Child 2');
		ExpandItem[h] := True;
		h := AddItem('Root 2');
		InsertItem(h,Nil,'Child 1');
		InsertItem(h,Nil,'Child 2');
	end;
	ApplyFilter();
	EndUpdate();
end
694
Is it possible to auto-numbering the children items too

with AxGrid1 do
begin
	BeginUpdate();
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exLinesAtRoot;
	Columns.Add('Items');
	with (Columns.Add('Pos.1') as EXGRIDLib.Column) do
	begin
		FormatColumn := '1 rpos ''''';
		Position := 0;
		Width := 32;
		AllowSizing := False;
	end;
	with (Columns.Add('Pos.2') as EXGRIDLib.Column) do
	begin
		FormatColumn := '1 rpos '':''';
		Position := 1;
		Width := 32;
		AllowSizing := False;
	end;
	with (Columns.Add('Pos.3') as EXGRIDLib.Column) do
	begin
		FormatColumn := '1 rpos '':|A-Z''';
		Position := 2;
		Width := 32;
		AllowSizing := False;
	end;
	with (Columns.Add('Pos.4') as EXGRIDLib.Column) do
	begin
		FormatColumn := '1 rpos ''|A-Z|''';
		Position := 3;
		Width := 32;
		AllowSizing := False;
	end;
	with (Columns.Add('Pos.5') as EXGRIDLib.Column) do
	begin
		FormatColumn := '''<font Tahoma;7>'' + 1 rpos ''-<b>||A-Z''';
		Def[EXGRIDLib.DefColumnEnum.exCellValueFormat] := TObject(1);
		Position := 4;
		Width := 32;
		AllowSizing := False;
	end;
	with (Columns.Add('Pos.6') as EXGRIDLib.Column) do
	begin
		FormatColumn := '''<b>''+ 1 rpos ''</b>:<fgcolor=FF0000>|A-Z|''';
		Def[EXGRIDLib.DefColumnEnum.exCellValueFormat] := TObject(1);
		Position := 5;
		Width := 48;
		AllowSizing := False;
	end;
	with Items do
	begin
		h := AddItem('Root 1');
		InsertItem(h,Nil,'Child 1');
		InsertItem(h,Nil,'Child 2');
		ExpandItem[h] := True;
		h := AddItem('Root 2');
		InsertItem(h,Nil,'Child 1');
		InsertItem(h,Nil,'Child 2');
	end;
	EndUpdate();
end
693
Is it possible to cancel or discard the values during validation

// ValidateValue event - Occurs before user changes the cell's value.
procedure TWinForm1.AxGrid1_ValidateValue(sender: System.Object; e: AxEXGRIDLib._IGridEvents_ValidateValueEvent);
begin
	with AxGrid1 do
	begin
		OutputDebugString( 'ValidateValue' );
		OutputDebugString( e.newValue );
		OutputDebugString( 'Change the Cancel parameter for ValidateValue event to accept/decline the newly value. ' );
		OutputDebugString( 'The DiscardValidateValue restores back the previously values.' );
		DiscardValidateValue();
	end
end;

with AxGrid1 do
begin
	BeginUpdate();
	CauseValidateValue := EXGRIDLib.ValidateValueType.exValidateCell;
	(Columns.Add('Date') as EXGRIDLib.Column).Editor.EditType := EXGRIDLib.EditTypeEnum.DateType;
	(Columns.Add('Text') as EXGRIDLib.Column).Editor.EditType := EXGRIDLib.EditTypeEnum.EditType;
	with Items do
	begin
		CellValue[TObject(AddItem('1/1/2001')),TObject(1)] := 'text';
		CellValue[TObject(AddItem('1/1/2001')),TObject(1)] := 'text';
		CellValue[TObject(AddItem('1/1/2001')),TObject(1)] := 'text';
		CellValue[TObject(AddItem('1/1/2001')),TObject(1)] := 'text';
		CellValue[TObject(AddItem('1/1/2001')),TObject(1)] := 'text';
	end;
	EndUpdate();
end
692
Is it possible to validate the values of the cells only when user leaves the focused item
// ValidateValue event - Occurs before user changes the cell's value.
procedure TWinForm1.AxGrid1_ValidateValue(sender: System.Object; e: AxEXGRIDLib._IGridEvents_ValidateValueEvent);
begin
	with AxGrid1 do
	begin
		OutputDebugString( 'ValidateValue' );
		OutputDebugString( e.newValue );
		OutputDebugString( 'Change the Cancel parameter for ValidateValue event to accept/decline the newly value. ' );
		e.cancel := True;
		OutputDebugString( 'You can not leave the item/record until the Cancel is False.' );
	end
end;

with AxGrid1 do
begin
	BeginUpdate();
	CauseValidateValue := EXGRIDLib.ValidateValueType.exValidateItem;
	(Columns.Add('Date') as EXGRIDLib.Column).Editor.EditType := EXGRIDLib.EditTypeEnum.DateType;
	(Columns.Add('Text') as EXGRIDLib.Column).Editor.EditType := EXGRIDLib.EditTypeEnum.EditType;
	with Items do
	begin
		CellValue[TObject(AddItem('1/1/2001')),TObject(1)] := 'text';
		CellValue[TObject(AddItem('1/1/2001')),TObject(1)] := 'text';
		CellValue[TObject(AddItem('1/1/2001')),TObject(1)] := 'text';
		CellValue[TObject(AddItem('1/1/2001')),TObject(1)] := 'text';
		CellValue[TObject(AddItem('1/1/2001')),TObject(1)] := 'text';
	end;
	EndUpdate();
end
691
We would like to validate the values of the cells. Is it possible

// ValidateValue event - Occurs before user changes the cell's value.
procedure TWinForm1.AxGrid1_ValidateValue(sender: System.Object; e: AxEXGRIDLib._IGridEvents_ValidateValueEvent);
begin
	with AxGrid1 do
	begin
		OutputDebugString( 'ValidateValue' );
		OutputDebugString( e.newValue );
		OutputDebugString( 'Change the Cancel parameter for ValidateValue event to accept/decline the newly value.' );
		e.cancel := True;
		OutputDebugString( 'You can not leave the cell until the Cancel is False.' );
	end
end;

with AxGrid1 do
begin
	BeginUpdate();
	CauseValidateValue := EXGRIDLib.ValidateValueType.exValidateCell;
	(Columns.Add('Date') as EXGRIDLib.Column).Editor.EditType := EXGRIDLib.EditTypeEnum.DateType;
	(Columns.Add('Text') as EXGRIDLib.Column).Editor.EditType := EXGRIDLib.EditTypeEnum.EditType;
	with Items do
	begin
		CellValue[TObject(AddItem('1/1/2001')),TObject(1)] := 'text';
		CellValue[TObject(AddItem('1/1/2001')),TObject(1)] := 'text';
		CellValue[TObject(AddItem('1/1/2001')),TObject(1)] := 'text';
		CellValue[TObject(AddItem('1/1/2001')),TObject(1)] := 'text';
		CellValue[TObject(AddItem('1/1/2001')),TObject(1)] := 'text';
	end;
	EndUpdate();
end
690
Is there any way to add auto-numbering

with AxGrid1 do
begin
	with Columns do
	begin
		Add('Items');
		with (Add('Pos') as EXGRIDLib.Column) do
		begin
			FormatColumn := '1 pos ''''';
			Position := 0;
		end;
	end;
	with Items do
	begin
		AddItem('Item 1');
		AddItem('Item 2');
		AddItem('Item 3');
	end;
end
689
Does your control supports multiple lines tooltip

with AxGrid1 do
begin
	set_HTMLPicture('pic1','c:\exontrol\images\zipdisk.gif');
	ToolTipDelay := 1;
	(Columns.Add('tootip') as EXGRIDLib.Column).ToolTip := '<br><font Tahoma;10>This</font> is a <b>multi-lines</b> tooltip assigned to a column. The tooltip supports built-in HTML tags, i' + 
	'cons and pictures.<br><br><br><img>pic1</img> picture ... <br><br>';
end
688
How can I prevent highlighting the column from the cursor - point

with AxGrid1 do
begin
	VisualAppearance.Add(1,'gBFLBCJwBAEHhEJAEGg4BI0IQAAYAQGKIYBkAKBQAGaAoDDUOQzQwAAxDKKUEwsACEIrjKCYVgOHYYRrIMYgBCMJhLEoaZLhEZRQiqDYtRDFQBSDDcPw/EaRZohGaYJg' + 
	'EgI=');
	set_Background(EXGRIDLib.BackgroundPartEnum.exCursorHoverColumn,$1000000);
	(Columns.Add('S') as EXGRIDLib.Column).Width := 32;
	(Columns.Add('Level 1') as EXGRIDLib.Column).LevelKey := TObject(1);
	(Columns.Add('Level 2') as EXGRIDLib.Column).LevelKey := TObject(1);
	(Columns.Add('Level 3') as EXGRIDLib.Column).LevelKey := TObject(1);
	(Columns.Add('E1') as EXGRIDLib.Column).Width := 32;
	(Columns.Add('E2') as EXGRIDLib.Column).Width := 32;
	(Columns.Add('E3') as EXGRIDLib.Column).Width := 32;
	(Columns.Add('E4') as EXGRIDLib.Column).Width := 32;
end
687
Is it possible display numbers in the same format no matter of regional settings in the control panel

with AxGrid1 do
begin
	BeginUpdate();
	(Columns.Add('Def') as EXGRIDLib.Column).Def[EXGRIDLib.DefColumnEnum.exCellValueFormat] := TObject(1);
	with Items do
	begin
		h := AddItem(TObject(100000.27));
		FormatCell[TObject(h),TObject(0)] := '(value format '''') +  '' <fgcolor=808080>(default positive)''';
		h := AddItem(TObject(100000.27));
		FormatCell[TObject(h),TObject(0)] := '(value format ''2|.|3|,|1|1'')';
		h := AddItem(TObject(-100000.27));
		FormatCell[TObject(h),TObject(0)] := '(value format '''') +  '' <fgcolor=808080>(default negative)''';
		h := AddItem(TObject(-100000.27));
		FormatCell[TObject(h),TObject(0)] := '(value format ''2|.|3|,|1|1'')';
	end;
	EndUpdate();
end
686
Is it possible to add a 0 for numbers less than 1 instead .7 to show 0.8

with AxGrid1 do
begin
	BeginUpdate();
	(Columns.Add('Def') as EXGRIDLib.Column).Def[EXGRIDLib.DefColumnEnum.exCellValueFormat] := TObject(1);
	with Items do
	begin
		h := AddItem(TObject(0.27));
		FormatCell[TObject(h),TObject(0)] := '(value format '''') +  '' <fgcolor=808080>(default)''';
		h := AddItem(TObject(0.27));
		FormatCell[TObject(h),TObject(0)] := '(value format ''|||||0'') +  '' <fgcolor=808080>(Display no leading zeros)''';
	end;
	EndUpdate();
end
685
How can I specify the format for negative numbers

with AxGrid1 do
begin
	BeginUpdate();
	(Columns.Add('Def') as EXGRIDLib.Column).Def[EXGRIDLib.DefColumnEnum.exCellValueFormat] := TObject(1);
	with Items do
	begin
		h := AddItem(TObject(-100000.27));
		FormatCell[TObject(h),TObject(0)] := '(value format '''') +  '' <fgcolor=808080>(default)''';
		h := AddItem(TObject(-100000.27));
		FormatCell[TObject(h),TObject(0)] := '(value format ''||||1'') +  '' <fgcolor=808080>(Negative sign, number; for example, -1.1)''';
	end;
	EndUpdate();
end
684
Is it possible to change the grouping character when display numbers

with AxGrid1 do
begin
	BeginUpdate();
	(Columns.Add('Def') as EXGRIDLib.Column).Def[EXGRIDLib.DefColumnEnum.exCellValueFormat] := TObject(1);
	with Items do
	begin
		h := AddItem(TObject(100000.27));
		FormatCell[TObject(h),TObject(0)] := '(value format '''') +  '' <fgcolor=808080>(default)''';
		h := AddItem(TObject(100000.27));
		FormatCell[TObject(h),TObject(0)] := '(value format ''|||-'') +  '' <fgcolor=808080>(grouping character is -)''';
	end;
	EndUpdate();
end
683
How can I display numbers with 2 digits in each group

with AxGrid1 do
begin
	BeginUpdate();
	(Columns.Add('Def') as EXGRIDLib.Column).Def[EXGRIDLib.DefColumnEnum.exCellValueFormat] := TObject(1);
	with Items do
	begin
		h := AddItem(TObject(100000.27));
		FormatCell[TObject(h),TObject(0)] := '(value format '''') +  '' <fgcolor=808080>(default)''';
		h := AddItem(TObject(100000.27));
		FormatCell[TObject(h),TObject(0)] := '(value format ''||2'') +  '' <fgcolor=808080>(grouping by 2 digits)''';
	end;
	EndUpdate();
end
682
How can I display my numbers using a different decimal separator

with AxGrid1 do
begin
	BeginUpdate();
	(Columns.Add('Def') as EXGRIDLib.Column).Def[EXGRIDLib.DefColumnEnum.exCellValueFormat] := TObject(1);
	with Items do
	begin
		h := AddItem(TObject(100.27));
		FormatCell[TObject(h),TObject(0)] := '(value format '''') +  '' <fgcolor=808080>(default)''';
		h := AddItem(TObject(100.27));
		FormatCell[TObject(h),TObject(0)] := '(value format ''|;'') +  '' <fgcolor=808080>(decimal separator is <b>;</b>)''';
	end;
	EndUpdate();
end
681
Is it possible to display the numbers using 3 (three) digits

with AxGrid1 do
begin
	BeginUpdate();
	(Columns.Add('Def') as EXGRIDLib.Column).Def[EXGRIDLib.DefColumnEnum.exCellValueFormat] := TObject(1);
	with Items do
	begin
		h := AddItem(TObject(100.27));
		FormatCell[TObject(h),TObject(0)] := '(value format '''') +  '' <fgcolor=808080>(default)''';
		h := AddItem(TObject(100.27));
		FormatCell[TObject(h),TObject(0)] := '(value format ''3'') +  '' <fgcolor=808080>(3 digits)''';
		h := AddItem(TObject(100.27));
		FormatCell[TObject(h),TObject(0)] := '(value format 2) +  ''  <fgcolor=808080>(2 digits)''';
		h := AddItem(TObject(100.27));
		FormatCell[TObject(h),TObject(0)] := '(value format 1) +  '' <fgcolor=808080>(1 digit)''';
	end;
	EndUpdate();
end
680
Is there any option to show the tooltip programmatically

// MouseMove event - Occurs when the user moves the mouse.
procedure TWinForm1.AxGrid1_MouseMoveEvent(sender: System.Object; e: AxEXGRIDLib._IGridEvents_MouseMoveEvent);
begin
	with AxGrid1 do
	begin
		ShowToolTip(get_ItemFromPoint(-1,-1,c,hit),'','8','8',Nil);
	end
end;

with AxGrid1 do
begin
	BeginUpdate();
	Columns.Add('Def');
	with Items do
	begin
		AddItem('Item 1');
		AddItem('Item 2');
		AddItem('Item 3');
	end;
	EndUpdate();
end
679
How can I specify the column's width to be the same for all columns

with AxGrid1 do
begin
	with Columns do
	begin
		Add('A');
		Add('B');
		Add('C');
	end;
	DrawGridLines := EXGRIDLib.GridLinesEnum.exAllLines;
	ColumnAutoResize := True;
end
678
How can I set the column's width to my desired width

with AxGrid1 do
begin
	ColumnAutoResize := False;
	with Columns do
	begin
		(Add('A') as EXGRIDLib.Column).Width := 128;
		(Add('B') as EXGRIDLib.Column).Width := 128;
	end;
	DrawGridLines := EXGRIDLib.GridLinesEnum.exAllLines;
end
677
Is it possible to format numbers

with AxGrid1 do
begin
	BeginUpdate();
	MarkSearchColumn := False;
	with Columns do
	begin
		Add('Name');
		with (Add('A') as EXGRIDLib.Column) do
		begin
			SortType := EXGRIDLib.SortTypeEnum.SortNumeric;
			AllowSizing := False;
			Width := 36;
			FormatColumn := 'len(value) ? value + '' +''';
			Editor.EditType := EXGRIDLib.EditTypeEnum.SpinType;
		end;
		with (Add('B') as EXGRIDLib.Column) do
		begin
			SortType := EXGRIDLib.SortTypeEnum.SortNumeric;
			AllowSizing := False;
			Width := 36;
			FormatColumn := 'len(value) ? value + '' +''';
			Editor.EditType := EXGRIDLib.EditTypeEnum.SpinType;
		end;
		with (Add('C') as EXGRIDLib.Column) do
		begin
			SortType := EXGRIDLib.SortTypeEnum.SortNumeric;
			AllowSizing := False;
			Width := 36;
			FormatColumn := 'len(value) ? value + '' =''';
			Editor.EditType := EXGRIDLib.EditTypeEnum.SpinType;
		end;
		with (Add('A+B+C') as EXGRIDLib.Column) do
		begin
			SortType := EXGRIDLib.SortTypeEnum.SortNumeric;
			Width := 64;
			ComputedField := 'dbl(%1)+dbl(%2)+dbl(%3)';
			FormatColumn := 'type(value) in (0,1) ? ''null'' : ( dbl(value)<0 ? ''<fgcolor=FF0000>''+ (value format ''2|.|3|,|1'' ) : (dbl(value)>0 ? ''<fgcolor=000' + 
	'0FF>+''+(value format ''2|.|3|,'' ): ''0.00'') )';
			Def[EXGRIDLib.DefColumnEnum.exCellValueFormat] := TObject(1);
		end;
	end;
	with Items do
	begin
		h := AddItem('Root');
		CellValueFormat[TObject(h),TObject(4)] := EXGRIDLib.ValueFormatEnum.exComputedField;
		h1 := InsertItem(h,Nil,'Child 1');
		CellValue[TObject(h1),TObject(1)] := TObject(7);
		CellValue[TObject(h1),TObject(2)] := TObject(3);
		CellValue[TObject(h1),TObject(3)] := TObject(1);
		h1 := InsertItem(h,Nil,'Child 2');
		CellValue[TObject(h1),TObject(1)] := TObject(-2);
		CellValue[TObject(h1),TObject(2)] := TObject(-2);
		CellValue[TObject(h1),TObject(3)] := TObject(-4);
		h1 := InsertItem(h,Nil,'Child 3');
		CellValue[TObject(h1),TObject(1)] := TObject(2);
		CellValue[TObject(h1),TObject(2)] := TObject(2);
		CellValue[TObject(h1),TObject(3)] := TObject(-4);
		ExpandItem[h] := True;
	end;
	EndUpdate();
end
676
How can I collapse all items

with AxGrid1 do
begin
	BeginUpdate();
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exLinesAtRoot;
	Columns.Add('Items');
	with Items do
	begin
		h := AddItem('Root 1');
		InsertItem(h,Nil,'Child 1');
		InsertItem(h,Nil,'Child 2');
		h := AddItem('Root 2');
		InsertItem(h,Nil,'Child 1');
		InsertItem(h,Nil,'Child 2');
		ExpandItem[0] := False;
	end;
	EndUpdate();
end
675
How can I expand all items

with AxGrid1 do
begin
	BeginUpdate();
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exLinesAtRoot;
	Columns.Add('Items');
	with Items do
	begin
		h := AddItem('Root 1');
		InsertItem(h,Nil,'Child 1');
		InsertItem(h,Nil,'Child 2');
		h := AddItem('Root 2');
		InsertItem(h,Nil,'Child 1');
		InsertItem(h,Nil,'Child 2');
		ExpandItem[0] := True;
	end;
	EndUpdate();
end
674
Can I display a total field without having to add a child item

with AxGrid1 do
begin
	BeginUpdate();
	with (Columns.Add('Numbers') as EXGRIDLib.Column) do
	begin
		SortType := EXGRIDLib.SortTypeEnum.SortNumeric;
		with Editor do
		begin
			EditType := EXGRIDLib.EditTypeEnum.SpinType;
			Numeric := EXGRIDLib.NumericEnum.exFloat;
		end;
	end;
	with Items do
	begin
		AddItem(TObject(1));
		AddItem(TObject(2));
		AddItem(TObject(3));
		AddItem(TObject(4));
		LockedItemCount[EXGRIDLib.VAlignmentEnum.exBottom] := 1;
		h := LockedItem[EXGRIDLib.VAlignmentEnum.exBottom,0];
		CellValue[TObject(h),TObject(0)] := 'sum(all,dir,dbl(%0))';
		SortableItem[h] := False;
		CellValueFormat[TObject(h),TObject(0)] := EXGRIDLib.ValueFormatEnum.exTotalField;
		CellHAlignment[TObject(h),TObject(0)] := EXGRIDLib.AlignmentEnum.RightAlignment;
		FormatCell[TObject(h),TObject(0)] := '''SUM: ''+value';
	end;
	EndUpdate();
end
673
Can I display the number of child items

with AxGrid1 do
begin
	BeginUpdate();
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exGroupLinesAtRoot;
	Columns.Add('');
	with Items do
	begin
		h := AddItem('Root 1');
		hx := SplitCell[TObject(h),TObject(0)];
		CellValue[TObject(0),TObject(hx)] := 'count(current,dir,1)';
		CellValueFormat[TObject(0),TObject(hx)] := EXGRIDLib.ValueFormatEnum.exTotalField;
		FormatCell[TObject(0),TObject(hx)] := '''Childs: '' + value';
		InsertItem(h,Nil,'Child 1');
		InsertItem(h,Nil,'Child 2');
		ExpandItem[h] := True;
		h := AddItem('Root 2');
		hx := SplitCell[TObject(h),TObject(0)];
		CellValue[TObject(0),TObject(hx)] := 'count(current,dir,1)';
		CellValueFormat[TObject(0),TObject(hx)] := EXGRIDLib.ValueFormatEnum.exTotalField;
		FormatCell[TObject(0),TObject(hx)] := '''Childs: '' + value';
		InsertItem(h,Nil,'Child 1');
		InsertItem(h,Nil,'Child 2');
		InsertItem(h,Nil,'Child 3');
		InsertItem(h,Nil,'Child 4');
	end;
	EndUpdate();
end
672
My field does not display the correctly computed value if I enter data using the control's editors ( concatenation of strings ). What am I doing wrong

with AxGrid1 do
begin
	BeginUpdate();
	Columns.Add('T');
	with (Columns.Add('A') as EXGRIDLib.Column).Editor do
	begin
		Numeric := EXGRIDLib.NumericEnum.exInteger;
		EditType := EXGRIDLib.EditTypeEnum.SpinType;
	end;
	with (Columns.Add('B') as EXGRIDLib.Column).Editor do
	begin
		Numeric := EXGRIDLib.NumericEnum.exInteger;
		EditType := EXGRIDLib.EditTypeEnum.SpinType;
	end;
	Columns.Add('A+B');
	with Items do
	begin
		h := AddItem('Incorrect');
		CellToolTip[TObject(h),TObject(0)] := 'Just type a number in the column A or B. The result will be concaternated';
		CellValue[TObject(h),TObject(1)] := '10';
		CellValue[TObject(h),TObject(2)] := '20';
		CellValue[TObject(h),TObject(3)] := 'currency(%1+%2)';
		CellValueFormat[TObject(h),TObject(3)] := EXGRIDLib.ValueFormatEnum.exComputedField;
		h := AddItem('Correct');
		CellValue[TObject(h),TObject(1)] := TObject(10);
		CellValue[TObject(h),TObject(2)] := TObject(20);
		CellValue[TObject(h),TObject(3)] := 'currency(dbl(%1)+dbl(%2))';
		CellValueFormat[TObject(h),TObject(3)] := EXGRIDLib.ValueFormatEnum.exComputedField;
	end;
	EndUpdate();
end
671
The CellValue/CellCaption property gets the result of a computed/total field with text formatting. Is it possible to get that value without text formatting

with AxGrid1 do
begin
	BeginUpdate();
	(Columns.Add('A') as EXGRIDLib.Column).Editor.EditType := EXGRIDLib.EditTypeEnum.SpinType;
	(Columns.Add('B') as EXGRIDLib.Column).Editor.EditType := EXGRIDLib.EditTypeEnum.SpinType;
	Columns.Add('A+B');
	with Items do
	begin
		h := AddItem(TObject(10));
		CellValue[TObject(h),TObject(1)] := TObject(20);
		CellValueFormat[TObject(h),TObject(2)] := EXGRIDLib.ValueFormatEnum.exComputedField;
		CellValue[TObject(h),TObject(2)] := 'currency(dbl(%0)+dbl(%1))';
		OutputDebugString( 'CellCaption returns ' );
		OutputDebugString( CellCaption[TObject(h),TObject(2)] );
		OutputDebugString( 'CellValue returns ' );
		OutputDebugString( CellValue[TObject(h),TObject(2)] );
		OutputDebugString( 'ComputeValue returns ' );
		OutputDebugString( ComputeValue['dbl(%0)+dbl(%1)',TObject(h),TObject(0),TObject(CellValueFormat[TObject(h),TObject(2)])] );
	end;
	EndUpdate();
end
670
Can I get the result of a specified formula as your control does using the ComputedField property
with AxGrid1 do
begin
	BeginUpdate();
	Columns.Add('A');
	Columns.Add('B');
	with Items do
	begin
		h := AddItem(TObject(10));
		CellValue[TObject(h),TObject(1)] := TObject(20);
		OutputDebugString( 'A+B is ' );
		OutputDebugString( ComputeValue['dbl(%0)+dbl(%1)',TObject(h),TObject(0),TObject(2)] );
	end;
	EndUpdate();
end
669
Is it possible to get the text without HTML formatting

with AxGrid1 do
begin
	BeginUpdate();
	Columns.Add('');
	with Items do
	begin
		h := AddItem('<b>bold</b>');
		OutputDebugString( ComputeValue[CellValue[TObject(h),TObject(0)],TObject(h),TObject(0),TObject(1)] );
	end;
	EndUpdate();
end
668
Can I specify an item to be a separator

with AxGrid1 do
begin
	BeginUpdate();
	TreeColumnIndex := -1;
	SortOnClick := EXGRIDLib.SortOnClickEnum.exNoSort;
	Columns.Add('Numbers');
	with Items do
	begin
		AddItem(TObject(1));
		AddItem(TObject(2));
		h := AddItem('separator');
		SelectableItem[h] := False;
		ItemDivider[h] := 0;
		ItemDividerLineAlignment[h] := EXGRIDLib.DividerAlignmentEnum.DividerCenter;
		ItemDividerLine[h] := EXGRIDLib.DividerLineEnum.ThinLine;
		CellHAlignment[TObject(h),TObject(0)] := EXGRIDLib.AlignmentEnum.CenterAlignment;
		AddItem(TObject(3));
		AddItem(TObject(4));
	end;
	EndUpdate();
end
667
How can I count only non-zero values

with AxGrid1 do
begin
	BeginUpdate();
	(Columns.Add('Numbers') as EXGRIDLib.Column).SortType := EXGRIDLib.SortTypeEnum.SortNumeric;
	with Items do
	begin
		AddItem(TObject(1));
		AddItem(TObject(2));
		AddItem(TObject(0));
		AddItem(TObject(0));
		AddItem(TObject(0));
		AddItem(TObject(0));
		AddItem(TObject(3));
		AddItem(TObject(4));
		h := AddItem('sum(all,dir,dbl(%0)?1:0)');
		SortableItem[h] := False;
		CellValueFormat[TObject(h),TObject(0)] := EXGRIDLib.ValueFormatEnum.exTotalField;
		CellHAlignment[TObject(h),TObject(0)] := EXGRIDLib.AlignmentEnum.RightAlignment;
		FormatCell[TObject(h),TObject(0)] := '''COUNT non-zero: ''+value';
	end;
	EndUpdate();
end
666
How can I add a AVG ( average ) field

with AxGrid1 do
begin
	BeginUpdate();
	(Columns.Add('Numbers') as EXGRIDLib.Column).SortType := EXGRIDLib.SortTypeEnum.SortNumeric;
	with Items do
	begin
		AddItem(TObject(1));
		AddItem(TObject(2));
		AddItem(TObject(3));
		AddItem(TObject(4));
		h := AddItem('avg(all,dir,dbl(%0))');
		SortableItem[h] := False;
		CellValueFormat[TObject(h),TObject(0)] := EXGRIDLib.ValueFormatEnum.exTotalField;
		CellHAlignment[TObject(h),TObject(0)] := EXGRIDLib.AlignmentEnum.RightAlignment;
		FormatCell[TObject(h),TObject(0)] := '''AVG: ''+value';
	end;
	EndUpdate();
end
665
How can I add a COUNT field

with AxGrid1 do
begin
	BeginUpdate();
	(Columns.Add('Numbers') as EXGRIDLib.Column).SortType := EXGRIDLib.SortTypeEnum.SortNumeric;
	with Items do
	begin
		AddItem(TObject(1));
		AddItem(TObject(2));
		AddItem(TObject(3));
		AddItem(TObject(4));
		h := AddItem('count(all,dir,0)');
		SortableItem[h] := False;
		CellValueFormat[TObject(h),TObject(0)] := EXGRIDLib.ValueFormatEnum.exTotalField;
		CellHAlignment[TObject(h),TObject(0)] := EXGRIDLib.AlignmentEnum.RightAlignment;
		FormatCell[TObject(h),TObject(0)] := '''COUNT: ''+value';
	end;
	EndUpdate();
end
664
How can I add a MAX field

with AxGrid1 do
begin
	BeginUpdate();
	(Columns.Add('Numbers') as EXGRIDLib.Column).SortType := EXGRIDLib.SortTypeEnum.SortNumeric;
	with Items do
	begin
		AddItem(TObject(1));
		AddItem(TObject(2));
		AddItem(TObject(3));
		AddItem(TObject(4));
		h := AddItem('max(all,dir,dbl(%0))');
		SortableItem[h] := False;
		CellValueFormat[TObject(h),TObject(0)] := EXGRIDLib.ValueFormatEnum.exTotalField;
		CellHAlignment[TObject(h),TObject(0)] := EXGRIDLib.AlignmentEnum.RightAlignment;
		FormatCell[TObject(h),TObject(0)] := '''MAX: ''+value';
	end;
	EndUpdate();
end
663
How can I add a MIN or MAX field (for numbers)

with AxGrid1 do
begin
	BeginUpdate();
	(Columns.Add('Numbers') as EXGRIDLib.Column).SortType := EXGRIDLib.SortTypeEnum.SortNumeric;
	with Items do
	begin
		AddItem(TObject(11));
		AddItem(TObject(21));
		AddItem(TObject(3));
		AddItem(TObject(4));
		h := AddItem('min(all,dir,dbl(%0))');
		SortableItem[h] := False;
		CellValueFormat[TObject(h),TObject(0)] := EXGRIDLib.ValueFormatEnum.exTotalField;
		CellHAlignment[TObject(h),TObject(0)] := EXGRIDLib.AlignmentEnum.RightAlignment;
		FormatCell[TObject(h),TObject(0)] := '''MIN: ''+value';
		h := AddItem('max(all,dir,dbl(%0))');
		SortableItem[h] := False;
		CellValueFormat[TObject(h),TObject(0)] := EXGRIDLib.ValueFormatEnum.exTotalField;
		CellHAlignment[TObject(h),TObject(0)] := EXGRIDLib.AlignmentEnum.RightAlignment;
		FormatCell[TObject(h),TObject(0)] := '''MAX: ''+value';
	end;
	EndUpdate();
end
662
How can I add a SUM field

with AxGrid1 do
begin
	BeginUpdate();
	(Columns.Add('Numbers') as EXGRIDLib.Column).SortType := EXGRIDLib.SortTypeEnum.SortNumeric;
	with Items do
	begin
		AddItem(TObject(1));
		AddItem(TObject(2));
		AddItem(TObject(3));
		AddItem(TObject(4));
		h := AddItem('sum(all,dir,dbl(%0))');
		SortableItem[h] := False;
		CellValueFormat[TObject(h),TObject(0)] := EXGRIDLib.ValueFormatEnum.exTotalField;
		CellHAlignment[TObject(h),TObject(0)] := EXGRIDLib.AlignmentEnum.RightAlignment;
		FormatCell[TObject(h),TObject(0)] := '''SUM: ''+value';
	end;
	EndUpdate();
end
661
How can I add total and subtotals fields

// Change event - Occurs when the user changes the cell's content.
procedure TWinForm1.AxGrid1_Change(sender: System.Object; e: AxEXGRIDLib._IGridEvents_ChangeEvent);
begin
	with AxGrid1 do
	begin
		Refresh();
	end
end;

with AxGrid1 do
begin
	BeginUpdate();
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exGroupLinesAtRoot;
	Columns.Add('Members');
	with (Columns.Add('Values') as EXGRIDLib.Column) do
	begin
		FormatColumn := 'currency(value)';
		with Editor do
		begin
			EditType := EXGRIDLib.EditTypeEnum.SpinType;
			Numeric := EXGRIDLib.NumericEnum.exInteger;
		end;
	end;
	with Items do
	begin
		h := AddItem('Group 1');
		ItemBold[h] := True;
		CellEditorVisible[TObject(h),TObject(1)] := EXGRIDLib.EditorVisibleEnum.exEditorHidden;
		CellValue[TObject(h),TObject(1)] := 'sum(current,dir,dbl(%1))';
		CellValueFormat[TObject(h),TObject(1)] := Integer(EXGRIDLib.ValueFormatEnum.exTotalField) Or Integer(EXGRIDLib.ValueFormatEnum.exHTML);
		CellHAlignment[TObject(h),TObject(1)] := EXGRIDLib.AlignmentEnum.RightAlignment;
		CellValue[TObject(InsertItem(h,Nil,'Child 1')),TObject(1)] := TObject(10);
		CellValue[TObject(InsertItem(h,Nil,'Child 2')),TObject(1)] := TObject(20);
		CellValue[TObject(InsertItem(h,Nil,'Child 3')),TObject(1)] := TObject(30);
		ExpandItem[h] := True;
		h := AddItem('Group 2');
		ItemBold[h] := True;
		CellEditorVisible[TObject(h),TObject(1)] := EXGRIDLib.EditorVisibleEnum.exEditorHidden;
		CellValue[TObject(h),TObject(1)] := 'sum(current,dir,dbl(%1))';
		CellValueFormat[TObject(h),TObject(1)] := Integer(EXGRIDLib.ValueFormatEnum.exTotalField) Or Integer(EXGRIDLib.ValueFormatEnum.exHTML);
		CellHAlignment[TObject(h),TObject(1)] := EXGRIDLib.AlignmentEnum.RightAlignment;
		CellValue[TObject(InsertItem(h,Nil,'Child 1')),TObject(1)] := TObject(5);
		CellValue[TObject(InsertItem(h,Nil,'Child 2')),TObject(1)] := TObject(15);
		CellValue[TObject(InsertItem(h,Nil,'Child 3')),TObject(1)] := TObject(35);
		h := AddItem('total');
		CellValue[TObject(h),TObject(1)] := 'sum(all,rec,dbl(%1))';
		CellValueFormat[TObject(h),TObject(1)] := Integer(EXGRIDLib.ValueFormatEnum.exTotalField) Or Integer(EXGRIDLib.ValueFormatEnum.exHTML);
		CellEditorVisible[TObject(h),TObject(1)] := EXGRIDLib.EditorVisibleEnum.exEditorHidden;
		FormatCell[TObject(h),TObject(1)] := '''Total: <b>'' + currency(value)';
		CellHAlignment[TObject(h),TObject(1)] := EXGRIDLib.AlignmentEnum.RightAlignment;
		ItemDivider[h] := 1;
		ItemDividerLineAlignment[h] := EXGRIDLib.DividerAlignmentEnum.DividerCenter;
		ItemDividerLine[h] := EXGRIDLib.DividerLineEnum.DoubleLine;
		SortableItem[h] := False;
	end;
	EndUpdate();
end
660
Is is possible to have subtotal items, and a grand total item

// Change event - Occurs when the user changes the cell's content.
procedure TWinForm1.AxGrid1_Change(sender: System.Object; e: AxEXGRIDLib._IGridEvents_ChangeEvent);
begin
	with AxGrid1 do
	begin
		Refresh();
	end
end;

with AxGrid1 do
begin
	BeginUpdate();
	BackColor := Color.FromArgb(255,255,255);
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exGroupLinesAtRoot;
	ShowFocusRect := False;
	Columns.Add('Members');
	with (Columns.Add('Values') as EXGRIDLib.Column) do
	begin
		FormatColumn := 'currency(value)';
		with Editor do
		begin
			EditType := EXGRIDLib.EditTypeEnum.SpinType;
			Numeric := EXGRIDLib.NumericEnum.exInteger;
		end;
	end;
	with Items do
	begin
		h := AddItem('Group 1');
		ItemBold[h] := True;
		SortableItem[h] := False;
		CellEditorVisible[TObject(h),TObject(1)] := EXGRIDLib.EditorVisibleEnum.exEditorHidden;
		FormatCell[TObject(h),TObject(1)] := ' ';
		CellValue[TObject(InsertItem(h,Nil,'Child 1')),TObject(1)] := TObject(10);
		CellValue[TObject(InsertItem(h,Nil,'Child 2')),TObject(1)] := TObject(20);
		CellValue[TObject(InsertItem(h,Nil,'Child 3')),TObject(1)] := TObject(30);
		hT := InsertItem(h,Nil,'subtotal');
		CellHAlignment[TObject(hT),TObject(1)] := EXGRIDLib.AlignmentEnum.RightAlignment;
		CellEditorVisible[TObject(hT),TObject(1)] := EXGRIDLib.EditorVisibleEnum.exEditorHidden;
		CellValue[TObject(hT),TObject(1)] := 'sum(parent,dir,dbl(%1))';
		CellValueFormat[TObject(hT),TObject(1)] := Integer(EXGRIDLib.ValueFormatEnum.exTotalField) Or Integer(EXGRIDLib.ValueFormatEnum.exHTML);
		FormatCell[TObject(hT),TObject(1)] := '''subtotal: <b>'' + currency(value)';
		ItemDivider[hT] := 1;
		ItemDividerLineAlignment[hT] := EXGRIDLib.DividerAlignmentEnum.DividerCenter;
		SortableItem[hT] := False;
		SelectableItem[hT] := False;
		ItemDividerLine[hT] := EXGRIDLib.DividerLineEnum.DotLine;
		ExpandItem[h] := True;
		h := AddItem('Group 2');
		ItemBold[h] := True;
		SortableItem[h] := False;
		FormatCell[TObject(h),TObject(1)] := ' ';
		CellEditorVisible[TObject(h),TObject(1)] := EXGRIDLib.EditorVisibleEnum.exEditorHidden;
		CellValue[TObject(InsertItem(h,Nil,'Child 1')),TObject(1)] := TObject(15);
		CellValue[TObject(InsertItem(h,Nil,'Child 2')),TObject(1)] := TObject(25);
		CellValue[TObject(InsertItem(h,Nil,'Child 3')),TObject(1)] := TObject(18);
		hT := InsertItem(h,Nil,'subtotal');
		CellHAlignment[TObject(hT),TObject(1)] := EXGRIDLib.AlignmentEnum.RightAlignment;
		CellEditorVisible[TObject(hT),TObject(1)] := EXGRIDLib.EditorVisibleEnum.exEditorHidden;
		CellValue[TObject(hT),TObject(1)] := 'sum(parent,dir,dbl(%1))';
		CellValueFormat[TObject(hT),TObject(1)] := Integer(EXGRIDLib.ValueFormatEnum.exTotalField) Or Integer(EXGRIDLib.ValueFormatEnum.exHTML);
		FormatCell[TObject(hT),TObject(1)] := '''subtotal: <b>'' + currency(value)';
		ItemDivider[hT] := 1;
		ItemDividerLineAlignment[hT] := EXGRIDLib.DividerAlignmentEnum.DividerCenter;
		ItemDividerLine[hT] := EXGRIDLib.DividerLineEnum.DotLine;
		SortableItem[hT] := False;
		SelectableItem[hT] := False;
		ExpandItem[h] := True;
		h := AddItem('total');
		CellValue[TObject(h),TObject(1)] := 'sum(all,rec,dbl(%1))';
		CellValueFormat[TObject(h),TObject(1)] := Integer(EXGRIDLib.ValueFormatEnum.exTotalField) Or Integer(EXGRIDLib.ValueFormatEnum.exHTML);
		CellEditorVisible[TObject(h),TObject(1)] := EXGRIDLib.EditorVisibleEnum.exEditorHidden;
		FormatCell[TObject(h),TObject(1)] := '''Total: <b><font ;11>'' + currency(value)';
		CellHAlignment[TObject(h),TObject(1)] := EXGRIDLib.AlignmentEnum.CenterAlignment;
		ItemDivider[h] := 1;
		ItemDividerLineAlignment[h] := EXGRIDLib.DividerAlignmentEnum.DividerCenter;
		ItemDividerLine[h] := EXGRIDLib.DividerLineEnum.DoubleLine;
		SortableItem[h] := False;
		SelectableItem[h] := False;
	end;
	EndUpdate();
end
659
Is it possible to have a total field for each column

// Change event - Occurs when the user changes the cell's content.
procedure TWinForm1.AxGrid1_Change(sender: System.Object; e: AxEXGRIDLib._IGridEvents_ChangeEvent);
begin
	with AxGrid1 do
	begin
		Refresh();
	end
end;

with AxGrid1 do
begin
	BeginUpdate();
	with (Columns.Add('C1') as EXGRIDLib.Column) do
	begin
		with Editor do
		begin
			Numeric := EXGRIDLib.NumericEnum.exInteger;
			EditType := EXGRIDLib.EditTypeEnum.SpinType;
		end;
		SortType := EXGRIDLib.SortTypeEnum.SortNumeric;
	end;
	with (Columns.Add('C2') as EXGRIDLib.Column) do
	begin
		with Editor do
		begin
			Numeric := EXGRIDLib.NumericEnum.exInteger;
			EditType := EXGRIDLib.EditTypeEnum.SpinType;
		end;
		SortType := EXGRIDLib.SortTypeEnum.SortNumeric;
	end;
	with Items do
	begin
		LockedItemCount[EXGRIDLib.VAlignmentEnum.exBottom] := 1;
		h := LockedItem[EXGRIDLib.VAlignmentEnum.exBottom,0];
		ItemBackColor[h] := $f0f0f0;
		ItemBold[h] := True;
		CellValue[TObject(h),TObject(0)] := 'sum(all,dir,dbl(%0))';
		CellValueFormat[TObject(h),TObject(0)] := EXGRIDLib.ValueFormatEnum.exTotalField;
		CellValue[TObject(h),TObject(1)] := 'sum(all,dir,dbl(%1))';
		CellValueFormat[TObject(h),TObject(1)] := EXGRIDLib.ValueFormatEnum.exTotalField;
	end;
	with Items do
	begin
		CellValue[TObject(AddItem(TObject(10))),TObject(1)] := TObject(12);
		CellValue[TObject(AddItem(TObject(25))),TObject(1)] := TObject(5);
		CellValue[TObject(AddItem(TObject(31))),TObject(1)] := TObject(17);
		CellValue[TObject(AddItem(TObject(48))),TObject(1)] := TObject(22);
	end;
	EndUpdate();
end
658
How can I add a total field for a DataSource being used

// Change event - Occurs when the user changes the cell's content.
procedure TWinForm1.AxGrid1_Change(sender: System.Object; e: AxEXGRIDLib._IGridEvents_ChangeEvent);
begin
	with AxGrid1 do
	begin
		Refresh();
	end
end;

with AxGrid1 do
begin
	ColumnAutoResize := False;
	ContinueColumnScroll := False;
	rs := (ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset')) as ADODB.Recordset);
	with rs do
	begin
		Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb',3,3,Nil);
	end;
	DataSource := (rs as ADODB.Recordset);
	with Items do
	begin
		LockedItemCount[EXGRIDLib.VAlignmentEnum.exTop] := 1;
		h := LockedItem[EXGRIDLib.VAlignmentEnum.exTop,0];
		ItemDivider[h] := 0;
		CellValueFormat[TObject(h),TObject(0)] := Integer(EXGRIDLib.ValueFormatEnum.exTotalField) Or Integer(EXGRIDLib.ValueFormatEnum.exHTML);
		CellValue[TObject(h),TObject(0)] := 'sum(all,dir,%1)';
	end;
end
657
How can I add a total field

// Change event - Occurs when the user changes the cell's content.
procedure TWinForm1.AxGrid1_Change(sender: System.Object; e: AxEXGRIDLib._IGridEvents_ChangeEvent);
begin
	with AxGrid1 do
	begin
		Refresh();
	end
end;

with AxGrid1 do
begin
	BeginUpdate();
	with (Columns.Add('Numbers') as EXGRIDLib.Column) do
	begin
		with Editor do
		begin
			Numeric := EXGRIDLib.NumericEnum.exInteger;
			EditType := EXGRIDLib.EditTypeEnum.SpinType;
		end;
		SortType := EXGRIDLib.SortTypeEnum.SortNumeric;
	end;
	with Items do
	begin
		LockedItemCount[EXGRIDLib.VAlignmentEnum.exTop] := 1;
		h := LockedItem[EXGRIDLib.VAlignmentEnum.exTop,0];
		ItemBackColor[h] := $f0f0f0;
		CellValue[TObject(h),TObject(0)] := 'sum(all,dir,dbl(%0))';
		CellValueFormat[TObject(h),TObject(0)] := EXGRIDLib.ValueFormatEnum.exTotalField;
		CellHAlignment[TObject(h),TObject(0)] := EXGRIDLib.AlignmentEnum.RightAlignment;
		FormatCell[TObject(h),TObject(0)] := '''Total: ''+value';
	end;
	with Items do
	begin
		AddItem(TObject(10));
		AddItem(TObject(25));
		AddItem(TObject(31));
		AddItem(TObject(48));
	end;
	EndUpdate();
end
656
How can I add a total field

// Change event - Occurs when the user changes the cell's content.
procedure TWinForm1.AxGrid1_Change(sender: System.Object; e: AxEXGRIDLib._IGridEvents_ChangeEvent);
begin
	with AxGrid1 do
	begin
		Refresh();
	end
end;

with AxGrid1 do
begin
	BeginUpdate();
	with (Columns.Add('Items') as EXGRIDLib.Column).Editor do
	begin
		EditType := EXGRIDLib.EditTypeEnum.SpinType;
		Numeric := EXGRIDLib.NumericEnum.exInteger;
	end;
	with Items do
	begin
		h := AddItem('Group 1');
		CellEditorVisible[TObject(h),TObject(0)] := EXGRIDLib.EditorVisibleEnum.exEditorHidden;
		InsertItem(h,Nil,TObject(10));
		InsertItem(h,Nil,TObject(20));
		InsertItem(h,Nil,TObject(30));
		hT := InsertItem(h,Nil,'sum(parent,dir,dbl(%0))');
		CellEditorVisible[TObject(hT),TObject(0)] := EXGRIDLib.EditorVisibleEnum.exEditorHidden;
		CellValueFormat[TObject(hT),TObject(0)] := Integer(EXGRIDLib.ValueFormatEnum.exTotalField) Or Integer(EXGRIDLib.ValueFormatEnum.exHTML);
		ItemDivider[hT] := 0;
		ItemDividerLineAlignment[hT] := EXGRIDLib.DividerAlignmentEnum.DividerTop;
		SelectableItem[hT] := False;
		SortableItem[hT] := False;
		ExpandItem[h] := True;
	end;
	EndUpdate();
end
655
Is it possible to specify the cell's value but still want to display some formatted text instead the value

with AxGrid1 do
begin
	BeginUpdate();
	Columns.Add('Value');
	Columns.Add('FormatCell');
	with Items do
	begin
		h := AddItem(TObject(1));
		CellValue[TObject(h),TObject(1)] := TObject(12);
		FormatCell[TObject(h),TObject(1)] := 'currency(value)';
		h := AddItem('1/1/2001');
		CellValue[TObject(h),TObject(1)] := '1/1/2001';
		CellValueFormat[TObject(h),TObject(1)] := EXGRIDLib.ValueFormatEnum.exHTML;
		FormatCell[TObject(h),TObject(1)] := 'longdate(value) replace ''2001'' with ''<b>2001</b>''';
	end;
	EndUpdate();
end
654
How can I simulate displaying groups

with AxGrid1 do
begin
	HasLines := EXGRIDLib.HierarchyLineEnum.exNoLine;
	ScrollBySingleLine := True;
	with Columns do
	begin
		Add('Name');
		Add('A');
		Add('B');
		Add('C');
	end;
	with Items do
	begin
		h := AddItem('Group 1');
		CellHAlignment[TObject(h),TObject(0)] := EXGRIDLib.AlignmentEnum.CenterAlignment;
		ItemDivider[h] := 0;
		ItemDividerLineAlignment[h] := EXGRIDLib.DividerAlignmentEnum.DividerBoth;
		ItemHeight[h] := 24;
		SortableItem[h] := False;
		h1 := InsertItem(h,Nil,'Child 1');
		CellValue[TObject(h1),TObject(1)] := TObject(1);
		CellValue[TObject(h1),TObject(2)] := TObject(2);
		CellValue[TObject(h1),TObject(3)] := TObject(3);
		h1 := InsertItem(h,Nil,'Child 2');
		CellValue[TObject(h1),TObject(1)] := TObject(4);
		CellValue[TObject(h1),TObject(2)] := TObject(5);
		CellValue[TObject(h1),TObject(3)] := TObject(6);
		ExpandItem[h] := True;
		h := AddItem('Group 2');
		CellHAlignment[TObject(h),TObject(0)] := EXGRIDLib.AlignmentEnum.CenterAlignment;
		ItemDivider[h] := 0;
		ItemDividerLineAlignment[h] := EXGRIDLib.DividerAlignmentEnum.DividerBoth;
		ItemHeight[h] := 24;
		SortableItem[h] := False;
		h1 := InsertItem(h,Nil,'Child 1');
		CellValue[TObject(h1),TObject(1)] := TObject(1);
		CellValue[TObject(h1),TObject(2)] := TObject(2);
		CellValue[TObject(h1),TObject(3)] := TObject(3);
		h1 := InsertItem(h,Nil,'Child 2');
		CellValue[TObject(h1),TObject(1)] := TObject(4);
		CellValue[TObject(h1),TObject(2)] := TObject(5);
		CellValue[TObject(h1),TObject(3)] := TObject(6);
		ExpandItem[h] := True;
	end;
end
653
Is it possible to specify the cell's value but still want to display some formatted text instead the value

with AxGrid1 do
begin
	BeginUpdate();
	MarkSearchColumn := False;
	with Columns do
	begin
		Add('Name');
		with (Add('Values') as EXGRIDLib.Column) do
		begin
			SortType := EXGRIDLib.SortTypeEnum.SortNumeric;
			AllowSizing := False;
			Width := 64;
			FormatColumn := '((0:=dbl(value)) < 10? ''<fgcolor=808080><font ;7>'' :''<b>'') + currency(=:0)';
			Def[EXGRIDLib.DefColumnEnum.exCellValueFormat] := TObject(1);
		end;
	end;
	with Items do
	begin
		h := AddItem('Root');
		FormatCell[TObject(h),TObject(1)] := '''<none>''';
		CellValue[TObject(InsertItem(h,Nil,'Child 1')),TObject(1)] := TObject(10);
		CellValue[TObject(InsertItem(h,Nil,'Child 2')),TObject(1)] := TObject(15);
		CellValue[TObject(InsertItem(h,Nil,'Child 3')),TObject(1)] := TObject(25);
		ExpandItem[h] := True;
	end;
	EndUpdate();
end
652
I am using the FormatColumn to display the current currency, but would like hide some values. Is it possible

with AxGrid1 do
begin
	BeginUpdate();
	MarkSearchColumn := False;
	with Columns do
	begin
		Add('Name');
		with (Add('Values') as EXGRIDLib.Column) do
		begin
			SortType := EXGRIDLib.SortTypeEnum.SortNumeric;
			AllowSizing := False;
			Width := 64;
			FormatColumn := '((0:=dbl(value)) < 10? ''<fgcolor=808080><font ;7>'' :''<b>'') + currency(=:0)';
			Def[EXGRIDLib.DefColumnEnum.exCellValueFormat] := TObject(1);
		end;
	end;
	with Items do
	begin
		h := AddItem('Root');
		FormatCell[TObject(h),TObject(1)] := ' ';
		CellValue[TObject(InsertItem(h,Nil,'Child 1')),TObject(1)] := TObject(10);
		CellValue[TObject(InsertItem(h,Nil,'Child 2')),TObject(1)] := TObject(15);
		CellValue[TObject(InsertItem(h,Nil,'Child 3')),TObject(1)] := TObject(25);
		ExpandItem[h] := True;
	end;
	EndUpdate();
end
651
How can I specify an item to be always the first item

with AxGrid1 do
begin
	BeginUpdate();
	TreeColumnIndex := -1;
	(Columns.Add('Numbers') as EXGRIDLib.Column).SortType := EXGRIDLib.SortTypeEnum.SortNumeric;
	with Items do
	begin
		AddItem(TObject(1));
		AddItem(TObject(2));
		AddItem(TObject(3));
		AddItem(TObject(4));
		h := AddItem('first');
		ItemPosition[h] := 0;
		CellHAlignment[TObject(h),TObject(0)] := EXGRIDLib.AlignmentEnum.RightAlignment;
		SortableItem[h] := False;
		SortChildren(0,TObject(0),False);
	end;
	EndUpdate();
end
650
How can I specify an item to be always the last item

with AxGrid1 do
begin
	BeginUpdate();
	TreeColumnIndex := -1;
	(Columns.Add('Numbers') as EXGRIDLib.Column).SortType := EXGRIDLib.SortTypeEnum.SortNumeric;
	with Items do
	begin
		AddItem(TObject(1));
		AddItem(TObject(2));
		AddItem(TObject(3));
		AddItem(TObject(4));
		h := AddItem('last');
		CellHAlignment[TObject(h),TObject(0)] := EXGRIDLib.AlignmentEnum.RightAlignment;
		SortableItem[h] := False;
		SortChildren(0,TObject(0),True);
	end;
	EndUpdate();
end
649
Can I allow sorting only the child items

with AxGrid1 do
begin
	BeginUpdate();
	Columns.Add('Childs');
	with Items do
	begin
		h := AddItem('Root 1');
		SortableItem[h] := False;
		InsertItem(h,Nil,'Child 1');
		InsertItem(h,Nil,'Child 2');
		ExpandItem[h] := True;
		h := AddItem('Root 2');
		SortableItem[h] := False;
		InsertItem(h,Nil,'Child 1');
		InsertItem(h,Nil,'Child 2');
		ExpandItem[h] := True;
	end;
	EndUpdate();
end
648
Can I specify a terminal item so it will mark the end of childs

with AxGrid1 do
begin
	BeginUpdate();
	ScrollBySingleLine := True;
	Columns.Add('P1');
	with Items do
	begin
		h := AddItem('Root 1');
		InsertItem(h,Nil,'Child 1');
		InsertItem(h,Nil,'Child 2');
		ExpandItem[h] := True;
		h := InsertItem(h,'','');
		ItemDivider[h] := 0;
		ItemDividerLineAlignment[h] := EXGRIDLib.DividerAlignmentEnum.DividerCenter;
		ItemHeight[h] := 2;
		SelectableItem[h] := False;
		SortableItem[h] := False;
		h := AddItem('Root 2');
		InsertItem(h,Nil,'Child 1');
		InsertItem(h,Nil,'Child 2');
		ExpandItem[h] := True;
		h := InsertItem(h,'','');
		ItemDivider[h] := 0;
		ItemDividerLineAlignment[h] := EXGRIDLib.DividerAlignmentEnum.DividerCenter;
		ItemHeight[h] := 2;
		SelectableItem[h] := False;
		SortableItem[h] := False;
	end;
	EndUpdate();
end
647
Is it possible to specify an item being unsortable so its position won't be changed after sorting

with AxGrid1 do
begin
	BeginUpdate();
	TreeColumnIndex := -1;
	(Columns.Add('Numbers') as EXGRIDLib.Column).SortType := EXGRIDLib.SortTypeEnum.SortNumeric;
	with Items do
	begin
		AddItem(TObject(1));
		AddItem(TObject(2));
		AddItem(TObject(3));
		AddItem(TObject(4));
		h := AddItem('top 3');
		ItemPosition[h] := 3;
		CellHAlignment[TObject(h),TObject(0)] := EXGRIDLib.AlignmentEnum.RightAlignment;
		SortableItem[h] := False;
		SortChildren(0,TObject(0),False);
	end;
	EndUpdate();
end
646
Is it possible to move an item from a parent to another

with AxGrid1 do
begin
	BeginUpdate();
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exLinesAtRoot;
	Columns.Add('Items');
	with Items do
	begin
		AddItem('A');
		AddItem('B');
		InsertItem(AddItem('C'),'','D');
		SetParent(FindItem['D',TObject(0),Nil],FindItem['A',TObject(0),Nil]);
	end;
	EndUpdate();
end
645
How can I change the identation for an item

with AxGrid1 do
begin
	BeginUpdate();
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exLinesAtRoot;
	Columns.Add('Items');
	with Items do
	begin
		AddItem('A');
		AddItem('B');
		InsertItem(AddItem('C'),'','D');
		SetParent(FindItem['D',TObject(0),Nil],0);
	end;
	EndUpdate();
end
644
How can I arrange the control's header on multiple levels

with AxGrid1 do
begin
	BeginUpdate();
	DefaultItemHeight := 48;
	with Columns do
	begin
		(Add('Title') as EXGRIDLib.Column).Visible := False;
		(Add('FirstName') as EXGRIDLib.Column).Visible := False;
		(Add('LastName') as EXGRIDLib.Column).Visible := False;
		(Add('Photo') as EXGRIDLib.Column).Visible := False;
		with (Add('Address') as EXGRIDLib.Column) do
		begin
			Visible := False;
			Def[EXGRIDLib.DefColumnEnum.exCellSingleLine] := TObject(False);
		end;
		with (Add('Personal Info') as EXGRIDLib.Column) do
		begin
			FormatLevel := '3:48,(0/1/2),4:96';
			Def[EXGRIDLib.DefColumnEnum.exCellFormatLevel] := '3:48,(0/1/2),4:96';
		end;
	end;
	with Items do
	begin
		h := AddItem('Sales Representative');
		CellValue[TObject(h),TObject(1)] := 'Nancy';
		CellValue[TObject(h),TObject(2)] := 'Davolio';
		CellPicture[TObject(h),TObject(3)] := AxGrid1.ExecuteTemplate('loadpicture(`c:\exontrol\images\zipdisk.gif`)');
		CellValue[TObject(h),TObject(4)] := '507-20th Ave. E.Apt.  2A';
	end;
	EndUpdate();
end
643
How can I filter programatically using more columns

with AxGrid1 do
begin
	BeginUpdate();
	with Columns do
	begin
		Add('Car');
		Add('Equipment');
	end;
	with Items do
	begin
		CellValue[TObject(AddItem('Mazda')),TObject(1)] := 'Air Bag';
		CellValue[TObject(AddItem('Toyota')),TObject(1)] := 'Air Bag,Air condition';
		CellValue[TObject(AddItem('Ford')),TObject(1)] := 'Air condition';
		CellValue[TObject(AddItem('Nissan')),TObject(1)] := 'Air Bag,ABS,ESP';
		CellValue[TObject(AddItem('Mazda')),TObject(1)] := 'Air Bag, ABS,ESP';
		CellValue[TObject(AddItem('Mazda')),TObject(1)] := 'ABS,ESP';
	end;
	with Columns.Item['Car'] do
	begin
		FilterType := EXGRIDLib.FilterTypeEnum.exFilter;
		Filter := 'Mazda';
	end;
	with Columns.Item['Equipment'] do
	begin
		FilterType := EXGRIDLib.FilterTypeEnum.exPattern;
		Filter := '*ABS*|*ESP*';
	end;
	ApplyFilter();
	EndUpdate();
end
642
How can I show the ticks for a single slider field

with AxGrid1 do
begin
	BeginUpdate();
	(Columns.Add('Slider') as EXGRIDLib.Column).Editor.EditType := EXGRIDLib.EditTypeEnum.SliderType;
	with Items do
	begin
		AddItem(TObject(10));
		with CellEditor[TObject(AddItem(TObject(20))),TObject(0)] do
		begin
			EditType := EXGRIDLib.EditTypeEnum.SliderType;
			Option[EXGRIDLib.EditorOptionEnum.exSliderTickFrequency] := TObject(10);
		end;
		AddItem(TObject(30));
	end;
	EndUpdate();
end
641
Is it possible to show ticks for slider fields

with AxGrid1 do
begin
	with (Columns.Add('Slider') as EXGRIDLib.Column).Editor do
	begin
		EditType := EXGRIDLib.EditTypeEnum.SliderType;
		Option[EXGRIDLib.EditorOptionEnum.exSliderTickFrequency] := TObject(10);
	end;
	Items.AddItem(TObject(10));
end
640
Is it possible to colour a particular column, I mean the cell's foreground color

with AxGrid1 do
begin
	BeginUpdate();
	with ConditionalFormats.Add('1',Nil) do
	begin
		ForeColor := $ff;
		ApplyTo := EXGRIDLib.FormatApplyToEnum($1);
	end;
	MarkSearchColumn := False;
	with Columns do
	begin
		Add('Column 1');
		Add('Column 2');
	end;
	with Items do
	begin
		CellValue[TObject(AddItem(TObject(0))),TObject(1)] := TObject(1);
		CellValue[TObject(AddItem(TObject(2))),TObject(1)] := TObject(3);
		CellValue[TObject(AddItem(TObject(4))),TObject(1)] := TObject(5);
	end;
	EndUpdate();
end
639
Is it possible to colour a particular column for specified values

with AxGrid1 do
begin
	BeginUpdate();
	with ConditionalFormats.Add('int(%1) in (3,4,5)',Nil) do
	begin
		BackColor := $ff;
		ApplyTo := EXGRIDLib.FormatApplyToEnum($1);
	end;
	MarkSearchColumn := False;
	with Columns do
	begin
		Add('Column 1');
		Add('Column 2');
	end;
	with Items do
	begin
		CellValue[TObject(AddItem(TObject(0))),TObject(1)] := TObject(1);
		CellValue[TObject(AddItem(TObject(2))),TObject(1)] := TObject(3);
		CellValue[TObject(AddItem(TObject(4))),TObject(1)] := TObject(5);
	end;
	EndUpdate();
end
638
Is it possible to colour a particular column

with AxGrid1 do
begin
	BeginUpdate();
	MarkSearchColumn := False;
	with Columns do
	begin
		Add('Column 1');
		(Add('Column 2') as EXGRIDLib.Column).Def[EXGRIDLib.DefColumnEnum.exCellBackColor] := TObject(255);
	end;
	with Items do
	begin
		CellValue[TObject(AddItem(TObject(0))),TObject(1)] := TObject(1);
		CellValue[TObject(AddItem(TObject(2))),TObject(1)] := TObject(3);
		CellValue[TObject(AddItem(TObject(4))),TObject(1)] := TObject(5);
	end;
	EndUpdate();
end
637
How do i get all the children items that are under a certain parent Item handle
with AxGrid1 do
begin
	BeginUpdate();
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exLinesAtRoot;
	Columns.Add('P');
	with Items do
	begin
		h := AddItem('Root');
		InsertItem(h,Nil,'Child 1');
		InsertItem(h,Nil,'Child 2');
		ExpandItem[h] := True;
	end;
	with Items do
	begin
		hChild := ItemChild[FirstVisibleItem];
		OutputDebugString( CellValue[TObject(hChild),TObject(0)] );
		OutputDebugString( CellValue[TObject(NextSiblingItem[hChild]),TObject(0)] );
	end;
	EndUpdate();
end
636
Is is possible to use HTML tags to display in the filter caption

with AxGrid1 do
begin
	BeginUpdate();
	FilterBarPromptVisible := EXGRIDLib.FilterBarVisibleEnum.exFilterBarPromptVisible;
	FilterBarCaption := 'This is a bit of text being displayed in the filter bar.';
	Columns.Add('');
	with Items do
	begin
		AddItem('Item 1');
		AddItem('Item 2');
		AddItem('Item 3');
	end;
	EndUpdate();
end
635
How can I find the number of items after filtering
with AxGrid1 do
begin
	BeginUpdate();
	Columns.Add('');
	with Items do
	begin
		h := AddItem('');
		CellValue[TObject(h),TObject(0)] := TObject(VisibleItemCount);
	end;
	EndUpdate();
end
634
How can I change the filter caption

with AxGrid1 do
begin
	BeginUpdate();
	ColumnAutoResize := True;
	ContinueColumnScroll := False;
	FocusColumnIndex := 1;
	MarkSearchColumn := False;
	SearchColumnIndex := 1;
	FilterBarPromptVisible := EXGRIDLib.FilterBarVisibleEnum.exFilterBarPromptVisible;
	FilterBarPromptType := Integer(EXGRIDLib.FilterPromptEnum.exFilterPromptWords) Or Integer(EXGRIDLib.FilterPromptEnum.exFilterPromptContainsAll);
	FilterBarPromptPattern := 'london robert';
	FilterBarCaption := '<r>Found: ... ';
	with Columns do
	begin
		(Add('Name') as EXGRIDLib.Column).Width := 96;
		(Add('Title') as EXGRIDLib.Column).Width := 96;
		Add('City');
	end;
	with Items do
	begin
		h0 := AddItem('Nancy Davolio');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Seattle';
		h0 := AddItem('Andrew Fuller');
		CellValue[TObject(h0),TObject(1)] := 'Vice President, Sales';
		CellValue[TObject(h0),TObject(2)] := 'Tacoma';
		SelectItem[h0] := True;
		h0 := AddItem('Janet Leverling');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Kirkland';
		h0 := AddItem('Margaret Peacock');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Redmond';
		h0 := AddItem('Steven Buchanan');
		CellValue[TObject(h0),TObject(1)] := 'Sales Manager';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Michael Suyama');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Robert King');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Laura Callahan');
		CellValue[TObject(h0),TObject(1)] := 'Inside Sales Coordinator';
		CellValue[TObject(h0),TObject(2)] := 'Seattle';
		h0 := AddItem('Anne Dodsworth');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
	end;
	EndUpdate();
end
633
While using the filter prompt is it is possible to use wild characters

with AxGrid1 do
begin
	BeginUpdate();
	ColumnAutoResize := True;
	ContinueColumnScroll := False;
	FocusColumnIndex := 1;
	MarkSearchColumn := False;
	SearchColumnIndex := 1;
	FilterBarPromptVisible := EXGRIDLib.FilterBarVisibleEnum.exFilterBarPromptVisible;
	FilterBarPromptType := EXGRIDLib.FilterPromptEnum.exFilterPromptPattern;
	FilterBarPromptPattern := 'lon* seat*';
	with Columns do
	begin
		(Add('Name') as EXGRIDLib.Column).Width := 96;
		(Add('Title') as EXGRIDLib.Column).Width := 96;
		Add('City');
	end;
	with Items do
	begin
		h0 := AddItem('Nancy Davolio');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Seattle';
		h0 := AddItem('Andrew Fuller');
		CellValue[TObject(h0),TObject(1)] := 'Vice President, Sales';
		CellValue[TObject(h0),TObject(2)] := 'Tacoma';
		SelectItem[h0] := True;
		h0 := AddItem('Janet Leverling');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Kirkland';
		h0 := AddItem('Margaret Peacock');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Redmond';
		h0 := AddItem('Steven Buchanan');
		CellValue[TObject(h0),TObject(1)] := 'Sales Manager';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Michael Suyama');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Robert King');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Laura Callahan');
		CellValue[TObject(h0),TObject(1)] := 'Inside Sales Coordinator';
		CellValue[TObject(h0),TObject(2)] := 'Seattle';
		h0 := AddItem('Anne Dodsworth');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
	end;
	EndUpdate();
end
632
How can I list all items that contains any of specified words, not necessary at the beggining

with AxGrid1 do
begin
	BeginUpdate();
	ColumnAutoResize := True;
	ContinueColumnScroll := False;
	FocusColumnIndex := 1;
	MarkSearchColumn := False;
	SearchColumnIndex := 1;
	FilterBarPromptVisible := EXGRIDLib.FilterBarVisibleEnum.exFilterBarPromptVisible;
	FilterBarPromptType := Integer(EXGRIDLib.FilterPromptEnum.exFilterPromptStartWords) Or Integer(EXGRIDLib.FilterPromptEnum.exFilterPromptContainsAny);
	FilterBarPromptPattern := 'london davolio';
	with Columns do
	begin
		(Add('Name') as EXGRIDLib.Column).Width := 96;
		(Add('Title') as EXGRIDLib.Column).Width := 96;
		Add('City');
	end;
	with Items do
	begin
		h0 := AddItem('Nancy Davolio');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Seattle';
		h0 := AddItem('Andrew Fuller');
		CellValue[TObject(h0),TObject(1)] := 'Vice President, Sales';
		CellValue[TObject(h0),TObject(2)] := 'Tacoma';
		SelectItem[h0] := True;
		h0 := AddItem('Janet Leverling');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Kirkland';
		h0 := AddItem('Margaret Peacock');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Redmond';
		h0 := AddItem('Steven Buchanan');
		CellValue[TObject(h0),TObject(1)] := 'Sales Manager';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Michael Suyama');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Robert King');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Laura Callahan');
		CellValue[TObject(h0),TObject(1)] := 'Inside Sales Coordinator';
		CellValue[TObject(h0),TObject(2)] := 'Seattle';
		h0 := AddItem('Anne Dodsworth');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
	end;
	EndUpdate();
end
631
How can I list all items that contains any of specified words, not strings

with AxGrid1 do
begin
	BeginUpdate();
	ColumnAutoResize := True;
	ContinueColumnScroll := False;
	FocusColumnIndex := 1;
	MarkSearchColumn := False;
	SearchColumnIndex := 1;
	FilterBarPromptVisible := EXGRIDLib.FilterBarVisibleEnum.exFilterBarPromptVisible;
	FilterBarPromptType := Integer(EXGRIDLib.FilterPromptEnum.exFilterPromptWords) Or Integer(EXGRIDLib.FilterPromptEnum.exFilterPromptContainsAny);
	FilterBarPromptPattern := 'london nancy';
	with Columns do
	begin
		(Add('Name') as EXGRIDLib.Column).Width := 96;
		(Add('Title') as EXGRIDLib.Column).Width := 96;
		Add('City');
	end;
	with Items do
	begin
		h0 := AddItem('Nancy Davolio');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Seattle';
		h0 := AddItem('Andrew Fuller');
		CellValue[TObject(h0),TObject(1)] := 'Vice President, Sales';
		CellValue[TObject(h0),TObject(2)] := 'Tacoma';
		SelectItem[h0] := True;
		h0 := AddItem('Janet Leverling');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Kirkland';
		h0 := AddItem('Margaret Peacock');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Redmond';
		h0 := AddItem('Steven Buchanan');
		CellValue[TObject(h0),TObject(1)] := 'Sales Manager';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Michael Suyama');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Robert King');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Laura Callahan');
		CellValue[TObject(h0),TObject(1)] := 'Inside Sales Coordinator';
		CellValue[TObject(h0),TObject(2)] := 'Seattle';
		h0 := AddItem('Anne Dodsworth');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
	end;
	EndUpdate();
end
630
How can I list all items that contains all specified words, not strings

with AxGrid1 do
begin
	BeginUpdate();
	ColumnAutoResize := True;
	ContinueColumnScroll := False;
	FocusColumnIndex := 1;
	MarkSearchColumn := False;
	SearchColumnIndex := 1;
	FilterBarPromptVisible := EXGRIDLib.FilterBarVisibleEnum.exFilterBarPromptVisible;
	FilterBarPromptType := Integer(EXGRIDLib.FilterPromptEnum.exFilterPromptWords) Or Integer(EXGRIDLib.FilterPromptEnum.exFilterPromptContainsAll);
	FilterBarPromptPattern := 'london robert';
	with Columns do
	begin
		(Add('Name') as EXGRIDLib.Column).Width := 96;
		(Add('Title') as EXGRIDLib.Column).Width := 96;
		Add('City');
	end;
	with Items do
	begin
		h0 := AddItem('Nancy Davolio');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Seattle';
		h0 := AddItem('Andrew Fuller');
		CellValue[TObject(h0),TObject(1)] := 'Vice President, Sales';
		CellValue[TObject(h0),TObject(2)] := 'Tacoma';
		SelectItem[h0] := True;
		h0 := AddItem('Janet Leverling');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Kirkland';
		h0 := AddItem('Margaret Peacock');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Redmond';
		h0 := AddItem('Steven Buchanan');
		CellValue[TObject(h0),TObject(1)] := 'Sales Manager';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Michael Suyama');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Robert King');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Laura Callahan');
		CellValue[TObject(h0),TObject(1)] := 'Inside Sales Coordinator';
		CellValue[TObject(h0),TObject(2)] := 'Seattle';
		h0 := AddItem('Anne Dodsworth');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
	end;
	EndUpdate();
end
629
I've noticed that the filtering by prompt is not case sensitive, is is possible to make it case sensitive

with AxGrid1 do
begin
	BeginUpdate();
	ColumnAutoResize := True;
	ContinueColumnScroll := False;
	FocusColumnIndex := 1;
	MarkSearchColumn := False;
	SearchColumnIndex := 1;
	FilterBarPromptVisible := EXGRIDLib.FilterBarVisibleEnum.exFilterBarPromptVisible;
	FilterBarPromptType := Integer(EXGRIDLib.FilterPromptEnum.exFilterPromptCaseSensitive) Or Integer(EXGRIDLib.FilterPromptEnum.exFilterPromptContainsAny);
	FilterBarPromptPattern := 'Anne';
	with Columns do
	begin
		(Add('Name') as EXGRIDLib.Column).Width := 96;
		(Add('Title') as EXGRIDLib.Column).Width := 96;
		Add('City');
	end;
	with Items do
	begin
		h0 := AddItem('Nancy Davolio');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Seattle';
		h0 := AddItem('Andrew Fuller');
		CellValue[TObject(h0),TObject(1)] := 'Vice President, Sales';
		CellValue[TObject(h0),TObject(2)] := 'Tacoma';
		SelectItem[h0] := True;
		h0 := AddItem('Janet Leverling');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Kirkland';
		h0 := AddItem('Margaret Peacock');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Redmond';
		h0 := AddItem('Steven Buchanan');
		CellValue[TObject(h0),TObject(1)] := 'Sales Manager';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Michael Suyama');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Robert King');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Laura Callahan');
		CellValue[TObject(h0),TObject(1)] := 'Inside Sales Coordinator';
		CellValue[TObject(h0),TObject(2)] := 'Seattle';
		h0 := AddItem('Anne Dodsworth');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
	end;
	EndUpdate();
end
628
Is it possible to list only items that ends with any of specified strings

with AxGrid1 do
begin
	BeginUpdate();
	ColumnAutoResize := True;
	ContinueColumnScroll := False;
	FocusColumnIndex := 1;
	MarkSearchColumn := False;
	SearchColumnIndex := 1;
	FilterBarPromptVisible := EXGRIDLib.FilterBarVisibleEnum.exFilterBarPromptVisible;
	FilterBarPromptType := EXGRIDLib.FilterPromptEnum.exFilterPromptEndWith;
	FilterBarPromptColumns := '0';
	FilterBarPromptPattern := 'Fuller';
	with Columns do
	begin
		(Add('Name') as EXGRIDLib.Column).Width := 96;
		(Add('Title') as EXGRIDLib.Column).Width := 96;
		Add('City');
	end;
	with Items do
	begin
		h0 := AddItem('Nancy Davolio');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Seattle';
		h0 := AddItem('Andrew Fuller');
		CellValue[TObject(h0),TObject(1)] := 'Vice President, Sales';
		CellValue[TObject(h0),TObject(2)] := 'Tacoma';
		SelectItem[h0] := True;
		h0 := AddItem('Janet Leverling');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Kirkland';
		h0 := AddItem('Margaret Peacock');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Redmond';
		h0 := AddItem('Steven Buchanan');
		CellValue[TObject(h0),TObject(1)] := 'Sales Manager';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Michael Suyama');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Robert King');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Laura Callahan');
		CellValue[TObject(h0),TObject(1)] := 'Inside Sales Coordinator';
		CellValue[TObject(h0),TObject(2)] := 'Seattle';
		h0 := AddItem('Anne Dodsworth');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
	end;
	EndUpdate();
end
627
Is it possible to list only items that ends with any of specified strings

with AxGrid1 do
begin
	BeginUpdate();
	ColumnAutoResize := True;
	ContinueColumnScroll := False;
	FocusColumnIndex := 1;
	MarkSearchColumn := False;
	SearchColumnIndex := 1;
	FilterBarPromptVisible := EXGRIDLib.FilterBarVisibleEnum.exFilterBarPromptVisible;
	FilterBarPromptType := EXGRIDLib.FilterPromptEnum.exFilterPromptEndWith;
	FilterBarPromptColumns := '0';
	FilterBarPromptPattern := 'Fuller';
	with Columns do
	begin
		(Add('Name') as EXGRIDLib.Column).Width := 96;
		(Add('Title') as EXGRIDLib.Column).Width := 96;
		Add('City');
	end;
	with Items do
	begin
		h0 := AddItem('Nancy Davolio');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Seattle';
		h0 := AddItem('Andrew Fuller');
		CellValue[TObject(h0),TObject(1)] := 'Vice President, Sales';
		CellValue[TObject(h0),TObject(2)] := 'Tacoma';
		SelectItem[h0] := True;
		h0 := AddItem('Janet Leverling');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Kirkland';
		h0 := AddItem('Margaret Peacock');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Redmond';
		h0 := AddItem('Steven Buchanan');
		CellValue[TObject(h0),TObject(1)] := 'Sales Manager';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Michael Suyama');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Robert King');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Laura Callahan');
		CellValue[TObject(h0),TObject(1)] := 'Inside Sales Coordinator';
		CellValue[TObject(h0),TObject(2)] := 'Seattle';
		h0 := AddItem('Anne Dodsworth');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
	end;
	EndUpdate();
end
626
Is it possible to list only items that starts with any of specified strings

with AxGrid1 do
begin
	BeginUpdate();
	ColumnAutoResize := True;
	ContinueColumnScroll := False;
	FocusColumnIndex := 1;
	MarkSearchColumn := False;
	SearchColumnIndex := 1;
	FilterBarPromptVisible := EXGRIDLib.FilterBarVisibleEnum.exFilterBarPromptVisible;
	FilterBarPromptType := EXGRIDLib.FilterPromptEnum.exFilterPromptStartWith;
	FilterBarPromptColumns := '0';
	FilterBarPromptPattern := 'An M';
	with Columns do
	begin
		(Add('Name') as EXGRIDLib.Column).Width := 96;
		(Add('Title') as EXGRIDLib.Column).Width := 96;
		Add('City');
	end;
	with Items do
	begin
		h0 := AddItem('Nancy Davolio');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Seattle';
		h0 := AddItem('Andrew Fuller');
		CellValue[TObject(h0),TObject(1)] := 'Vice President, Sales';
		CellValue[TObject(h0),TObject(2)] := 'Tacoma';
		SelectItem[h0] := True;
		h0 := AddItem('Janet Leverling');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Kirkland';
		h0 := AddItem('Margaret Peacock');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Redmond';
		h0 := AddItem('Steven Buchanan');
		CellValue[TObject(h0),TObject(1)] := 'Sales Manager';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Michael Suyama');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Robert King');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Laura Callahan');
		CellValue[TObject(h0),TObject(1)] := 'Inside Sales Coordinator';
		CellValue[TObject(h0),TObject(2)] := 'Seattle';
		h0 := AddItem('Anne Dodsworth');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
	end;
	EndUpdate();
end
625
Is it possible to list only items that starts with specified string

with AxGrid1 do
begin
	BeginUpdate();
	ColumnAutoResize := True;
	ContinueColumnScroll := False;
	FocusColumnIndex := 1;
	MarkSearchColumn := False;
	SearchColumnIndex := 1;
	FilterBarPromptVisible := EXGRIDLib.FilterBarVisibleEnum.exFilterBarPromptVisible;
	FilterBarPromptType := EXGRIDLib.FilterPromptEnum.exFilterPromptStartWith;
	FilterBarPromptColumns := '0';
	FilterBarPromptPattern := 'A';
	with Columns do
	begin
		(Add('Name') as EXGRIDLib.Column).Width := 96;
		(Add('Title') as EXGRIDLib.Column).Width := 96;
		Add('City');
	end;
	with Items do
	begin
		h0 := AddItem('Nancy Davolio');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Seattle';
		h0 := AddItem('Andrew Fuller');
		CellValue[TObject(h0),TObject(1)] := 'Vice President, Sales';
		CellValue[TObject(h0),TObject(2)] := 'Tacoma';
		SelectItem[h0] := True;
		h0 := AddItem('Janet Leverling');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Kirkland';
		h0 := AddItem('Margaret Peacock');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Redmond';
		h0 := AddItem('Steven Buchanan');
		CellValue[TObject(h0),TObject(1)] := 'Sales Manager';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Michael Suyama');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Robert King');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Laura Callahan');
		CellValue[TObject(h0),TObject(1)] := 'Inside Sales Coordinator';
		CellValue[TObject(h0),TObject(2)] := 'Seattle';
		h0 := AddItem('Anne Dodsworth');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
	end;
	EndUpdate();
end
624
How can I specify that the list should include any of the seqeunces in the pattern

with AxGrid1 do
begin
	BeginUpdate();
	ColumnAutoResize := True;
	ContinueColumnScroll := False;
	FocusColumnIndex := 1;
	MarkSearchColumn := False;
	SearchColumnIndex := 1;
	FilterBarPromptVisible := EXGRIDLib.FilterBarVisibleEnum.exFilterBarPromptVisible;
	FilterBarPromptType := EXGRIDLib.FilterPromptEnum.exFilterPromptContainsAny;
	FilterBarPromptPattern := 'london seattle';
	with Columns do
	begin
		(Add('Name') as EXGRIDLib.Column).Width := 96;
		(Add('Title') as EXGRIDLib.Column).Width := 96;
		Add('City');
	end;
	with Items do
	begin
		h0 := AddItem('Nancy Davolio');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Seattle';
		h0 := AddItem('Andrew Fuller');
		CellValue[TObject(h0),TObject(1)] := 'Vice President, Sales';
		CellValue[TObject(h0),TObject(2)] := 'Tacoma';
		SelectItem[h0] := True;
		h0 := AddItem('Janet Leverling');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Kirkland';
		h0 := AddItem('Margaret Peacock');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Redmond';
		h0 := AddItem('Steven Buchanan');
		CellValue[TObject(h0),TObject(1)] := 'Sales Manager';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Michael Suyama');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Robert King');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Laura Callahan');
		CellValue[TObject(h0),TObject(1)] := 'Inside Sales Coordinator';
		CellValue[TObject(h0),TObject(2)] := 'Seattle';
		h0 := AddItem('Anne Dodsworth');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
	end;
	EndUpdate();
end
623
How can I specify that all sequences in the filter pattern must be included in the list

with AxGrid1 do
begin
	BeginUpdate();
	ColumnAutoResize := True;
	ContinueColumnScroll := False;
	FocusColumnIndex := 1;
	MarkSearchColumn := False;
	SearchColumnIndex := 1;
	FilterBarPromptVisible := EXGRIDLib.FilterBarVisibleEnum.exFilterBarPromptVisible;
	FilterBarPromptType := EXGRIDLib.FilterPromptEnum.exFilterPromptContainsAll;
	FilterBarPromptPattern := 'london manager';
	with Columns do
	begin
		(Add('Name') as EXGRIDLib.Column).Width := 96;
		(Add('Title') as EXGRIDLib.Column).Width := 96;
		Add('City');
	end;
	with Items do
	begin
		h0 := AddItem('Nancy Davolio');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Seattle';
		h0 := AddItem('Andrew Fuller');
		CellValue[TObject(h0),TObject(1)] := 'Vice President, Sales';
		CellValue[TObject(h0),TObject(2)] := 'Tacoma';
		SelectItem[h0] := True;
		h0 := AddItem('Janet Leverling');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Kirkland';
		h0 := AddItem('Margaret Peacock');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Redmond';
		h0 := AddItem('Steven Buchanan');
		CellValue[TObject(h0),TObject(1)] := 'Sales Manager';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Michael Suyama');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Robert King');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Laura Callahan');
		CellValue[TObject(h0),TObject(1)] := 'Inside Sales Coordinator';
		CellValue[TObject(h0),TObject(2)] := 'Seattle';
		h0 := AddItem('Anne Dodsworth');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
	end;
	EndUpdate();
end
622
How do I change at runtime the filter prompt

with AxGrid1 do
begin
	BeginUpdate();
	ColumnAutoResize := True;
	ContinueColumnScroll := False;
	FocusColumnIndex := 1;
	MarkSearchColumn := False;
	SearchColumnIndex := 1;
	FilterBarPromptVisible := EXGRIDLib.FilterBarVisibleEnum.exFilterBarPromptVisible;
	FilterBarPromptPattern := 'london manager';
	with Columns do
	begin
		(Add('Name') as EXGRIDLib.Column).Width := 96;
		(Add('Title') as EXGRIDLib.Column).Width := 96;
		Add('City');
	end;
	with Items do
	begin
		h0 := AddItem('Nancy Davolio');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Seattle';
		h0 := AddItem('Andrew Fuller');
		CellValue[TObject(h0),TObject(1)] := 'Vice President, Sales';
		CellValue[TObject(h0),TObject(2)] := 'Tacoma';
		SelectItem[h0] := True;
		h0 := AddItem('Janet Leverling');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Kirkland';
		h0 := AddItem('Margaret Peacock');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Redmond';
		h0 := AddItem('Steven Buchanan');
		CellValue[TObject(h0),TObject(1)] := 'Sales Manager';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Michael Suyama');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Robert King');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Laura Callahan');
		CellValue[TObject(h0),TObject(1)] := 'Inside Sales Coordinator';
		CellValue[TObject(h0),TObject(2)] := 'Seattle';
		h0 := AddItem('Anne Dodsworth');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
	end;
	EndUpdate();
end
621
How do I specify to filter only a single column when using the filter prompt

with AxGrid1 do
begin
	BeginUpdate();
	ColumnAutoResize := True;
	ContinueColumnScroll := False;
	FocusColumnIndex := 1;
	MarkSearchColumn := False;
	SearchColumnIndex := 1;
	FilterBarPromptVisible := EXGRIDLib.FilterBarVisibleEnum.exFilterBarPromptVisible;
	FilterBarPromptColumns := '2,3';
	FilterBarPromptPattern := 'london';
	with Columns do
	begin
		(Add('Name') as EXGRIDLib.Column).Width := 96;
		(Add('Title') as EXGRIDLib.Column).Width := 96;
		Add('City');
	end;
	with Items do
	begin
		h0 := AddItem('Nancy Davolio');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Seattle';
		h0 := AddItem('Andrew Fuller');
		CellValue[TObject(h0),TObject(1)] := 'Vice President, Sales';
		CellValue[TObject(h0),TObject(2)] := 'Tacoma';
		SelectItem[h0] := True;
		h0 := AddItem('Janet Leverling');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Kirkland';
		h0 := AddItem('Margaret Peacock');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Redmond';
		h0 := AddItem('Steven Buchanan');
		CellValue[TObject(h0),TObject(1)] := 'Sales Manager';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Michael Suyama');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Robert King');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Laura Callahan');
		CellValue[TObject(h0),TObject(1)] := 'Inside Sales Coordinator';
		CellValue[TObject(h0),TObject(2)] := 'Seattle';
		h0 := AddItem('Anne Dodsworth');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
	end;
	EndUpdate();
end
620
How do I change the prompt or the caption being displayed in the filter bar

with AxGrid1 do
begin
	BeginUpdate();
	ColumnAutoResize := True;
	ContinueColumnScroll := False;
	FocusColumnIndex := 1;
	MarkSearchColumn := False;
	SearchColumnIndex := 1;
	FilterBarPromptVisible := EXGRIDLib.FilterBarVisibleEnum.exFilterBarPromptVisible;
	FilterBarPrompt := 'changed';
	with Columns do
	begin
		(Add('Name') as EXGRIDLib.Column).Width := 96;
		(Add('Title') as EXGRIDLib.Column).Width := 96;
		Add('City');
	end;
	EndUpdate();
end
619
How do I enable the filter prompt feature

with AxGrid1 do
begin
	BeginUpdate();
	ColumnAutoResize := True;
	ContinueColumnScroll := False;
	FocusColumnIndex := 1;
	MarkSearchColumn := False;
	SearchColumnIndex := 1;
	FilterBarPromptVisible := EXGRIDLib.FilterBarVisibleEnum.exFilterBarPromptVisible;
	with Columns do
	begin
		(Add('Name') as EXGRIDLib.Column).Width := 96;
		(Add('Title') as EXGRIDLib.Column).Width := 96;
		Add('City');
	end;
	with Items do
	begin
		h0 := AddItem('Nancy Davolio');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Seattle';
		h0 := AddItem('Andrew Fuller');
		CellValue[TObject(h0),TObject(1)] := 'Vice President, Sales';
		CellValue[TObject(h0),TObject(2)] := 'Tacoma';
		SelectItem[h0] := True;
		h0 := AddItem('Janet Leverling');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Kirkland';
		h0 := AddItem('Margaret Peacock');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'Redmond';
		h0 := AddItem('Steven Buchanan');
		CellValue[TObject(h0),TObject(1)] := 'Sales Manager';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Michael Suyama');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Robert King');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
		h0 := AddItem('Laura Callahan');
		CellValue[TObject(h0),TObject(1)] := 'Inside Sales Coordinator';
		CellValue[TObject(h0),TObject(2)] := 'Seattle';
		h0 := AddItem('Anne Dodsworth');
		CellValue[TObject(h0),TObject(1)] := 'Sales Representative';
		CellValue[TObject(h0),TObject(2)] := 'London';
	end;
	EndUpdate();
end
618
How can I control the colors that can be applied to an EBN part

// Change event - Occurs when the user changes the cell's content.
procedure TWinForm1.AxGrid1_Change(sender: System.Object; e: AxEXGRIDLib._IGridEvents_ChangeEvent);
begin
	with AxGrid1 do
	begin
		with Items do
		begin
			ItemBackColor[FirstVisibleItem] := e.newValue;
		end;
	end
end;

with AxGrid1 do
begin
	BeginUpdate();
	with VisualAppearance do
	begin
		Add(2,'c:\exontrol\images\normal.ebn');
		Add(1,'CP:2 10 3 -10 -5');
	end;
	SelBackColor := BackColor;
	SelForeColor := ForeColor;
	ScrollBySingleLine := True;
	TreeColumnIndex := -1;
	with Columns do
	begin
		with (Add('Test') as EXGRIDLib.Column) do
		begin
			Width := 32;
		end;
		with (Add('RGB') as EXGRIDLib.Column) do
		begin
			with Editor do
			begin
				EditType := EXGRIDLib.EditTypeEnum.SliderType;
				Option[EXGRIDLib.EditorOptionEnum.exSliderMax] := TObject(255);
				Option[EXGRIDLib.EditorOptionEnum.exSliderWidth] := TObject(-60);
			end;
		end;
	end;
	with Items do
	begin
		h := AddItem('');
		CellHAlignment[TObject(h),TObject(0)] := EXGRIDLib.AlignmentEnum.CenterAlignment;
		ItemDivider[h] := 0;
		ItemBackColor[h] := $1000000;
		ItemHeight[h] := 36;
		SelectableItem[h] := False;
		h := InsertItem(0,TObject(1),'Red');
		CellValue[TObject(h),TObject(1)] := TObject(255);
		h := InsertItem(0,TObject(255),'Green');
		CellValue[TObject(h),TObject(1)] := TObject(255);
		h := InsertItem(0,TObject(65536),'Blue');
		CellValue[TObject(h),TObject(1)] := TObject(255);
	end;
	EndUpdate();
end
617
I know this is fairly basic, but could you send me a sample that places a tree in the first column

with AxGrid1 do
begin
	BeginUpdate();
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exLinesAtRoot;
	Columns.Add('heading');
	with Items do
	begin
		h := AddItem('Parent 1');
		InsertItem(h,Nil,'Child A');
		InsertItem(InsertItem(h,Nil,'Child B'),Nil,'GrandChild C');
		ExpandItem[h] := True;
		h := AddItem('Parent 2');
		InsertItem(h,Nil,'Child D');
		InsertItem(h,Nil,'Child E');
		ExpandItem[h] := True;
	end;
	EndUpdate();
end
616
How can I get the caption of focused item
// SelectionChanged event - Fired after a new item has been selected.
procedure TWinForm1.AxGrid1_SelectionChanged(sender: System.Object; e: System.EventArgs);
begin
	with AxGrid1 do
	begin
		with Items do
		begin
			OutputDebugString( 'Handle' );
			OutputDebugString( FocusItem );
			OutputDebugString( 'Caption' );
			OutputDebugString( CellCaption[TObject(FocusItem),TObject(0)] );
		end;
	end
end;

with AxGrid1 do
begin
	BeginUpdate();
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exLinesAtRoot;
	Columns.Add('Items');
	with Items do
	begin
		h := AddItem('R1');
		InsertItem(h,Nil,'Cell 1.1');
		InsertItem(h,Nil,'Cell 1.2');
		ExpandItem[h] := True;
		h := AddItem('R2');
		InsertItem(h,Nil,'Cell 2.1');
		InsertItem(h,Nil,'Cell 2.2');
		ExpandItem[h] := True;
	end;
	EndUpdate();
end
615
How can I get the caption of selected item
// SelectionChanged event - Fired after a new item has been selected.
procedure TWinForm1.AxGrid1_SelectionChanged(sender: System.Object; e: System.EventArgs);
begin
	with AxGrid1 do
	begin
		with Items do
		begin
			OutputDebugString( 'Handle' );
			OutputDebugString( SelectedItem[0] );
			OutputDebugString( 'Caption' );
			OutputDebugString( CellCaption[TObject(SelectedItem[0]),TObject(0)] );
		end;
	end
end;

with AxGrid1 do
begin
	BeginUpdate();
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exLinesAtRoot;
	Columns.Add('Items');
	with Items do
	begin
		h := AddItem('R1');
		InsertItem(h,Nil,'Cell 1.1');
		InsertItem(h,Nil,'Cell 1.2');
		ExpandItem[h] := True;
		h := AddItem('R2');
		InsertItem(h,Nil,'Cell 2.1');
		InsertItem(h,Nil,'Cell 2.2');
		ExpandItem[h] := True;
	end;
	EndUpdate();
end
614
Is it possible to let users selects cells as in Excel

with AxGrid1 do
begin
	BeginUpdate();
	FullRowSelect := EXGRIDLib.CellSelectEnum.exRectSel;
	SingleSel := False;
	ReadOnly := EXGRIDLib.ReadOnlyEnum.exReadOnly;
	MarkSearchColumn := False;
	ShowFocusRect := False;
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exLinesAtRoot;
	SelForeColor := Color.FromArgb(0,0,0);
	SelBackColor := Color.FromArgb(200,225,242);
	with Columns do
	begin
		Add('A');
		with (Add('B') as EXGRIDLib.Column) do
		begin
			AllowSizing := False;
			Width := 24;
		end;
		with (Add('C') as EXGRIDLib.Column) do
		begin
			AllowSizing := False;
			Width := 24;
			Def[EXGRIDLib.DefColumnEnum.exCellHasCheckBox] := TObject(1);
			PartialCheck := True;
		end;
		with (Add('D') as EXGRIDLib.Column) do
		begin
			AllowSizing := False;
			Width := 24;
			Def[EXGRIDLib.DefColumnEnum.exCellHasRadioButton] := TObject(1);
		end;
	end;
	with Items do
	begin
		h := InsertItem(Nil,Nil,'Group 1');
		h1 := InsertItem(h,Nil,TObject(16));
		CellValue[TObject(h1),TObject(1)] := TObject(17);
		h1 := InsertItem(h,Nil,TObject(2));
		CellValue[TObject(h1),TObject(1)] := TObject(11);
		h1 := InsertItem(h,Nil,TObject(2));
		ItemBackColor[h1] := $f0f0f0;
		CellValue[TObject(h1),TObject(1)] := TObject(9);
		ExpandItem[h] := True;
		h := InsertItem(Nil,Nil,'Group 2');
		CellValueFormat[TObject(h),TObject(2)] := EXGRIDLib.ValueFormatEnum.exHTML;
		h1 := InsertItem(h,Nil,TObject(16));
		CellValue[TObject(h1),TObject(1)] := TObject(9);
		h1 := InsertItem(h,Nil,TObject(12));
		CellValue[TObject(h1),TObject(1)] := TObject(11);
		h1 := InsertItem(h,Nil,TObject(2));
		CellValue[TObject(h1),TObject(1)] := TObject(2);
		ExpandItem[h] := True;
		SelectItem[h] := True;
	end;
	EndUpdate();
end
613
Is it possible to change the style for the vertical or horizontal grid lines, in the list area

with AxGrid1 do
begin
	BeginUpdate();
	DrawGridLines := EXGRIDLib.GridLinesEnum.exAllLines;
	GridLineStyle := Integer(EXGRIDLib.GridLinesStyleEnum.exGridLinesVSolid) Or Integer(EXGRIDLib.GridLinesStyleEnum.exGridLinesHDot4);
	Columns.Add('C1');
	Columns.Add('C2');
	Columns.Add('C3');
	with Items do
	begin
		h := AddItem('Item 1');
		CellValue[TObject(h),TObject(1)] := 'SubItem 1.2';
		CellValue[TObject(h),TObject(2)] := 'SubItem 1.3';
		h := AddItem('Item 2');
		CellValue[TObject(h),TObject(1)] := 'SubItem 2.2';
		CellValue[TObject(h),TObject(2)] := 'SubItem 2.3';
	end;
	EndUpdate();
end
612
Is it possible to change the style for the grid lines, for instance to be solid not dotted

with AxGrid1 do
begin
	BeginUpdate();
	DrawGridLines := EXGRIDLib.GridLinesEnum.exAllLines;
	GridLineStyle := EXGRIDLib.GridLinesStyleEnum.exGridLinesSolid;
	Columns.Add('Column');
	EndUpdate();
end
611
I have some buttons added on the control's scroll bar, how can I can know when the button is being clicked

// ScrollButtonClick event - Occurs when the user clicks a button in the scrollbar.
procedure TWinForm1.AxGrid1_ScrollButtonClick(sender: System.Object; e: AxEXGRIDLib._IGridEvents_ScrollButtonClickEvent);
begin
	with AxGrid1 do
	begin
		OutputDebugString( e.scrollBar );
		OutputDebugString( e.scrollPart );
	end
end;

with AxGrid1 do
begin
	set_ScrollPartVisible(EXGRIDLib.ScrollBarEnum.exHScroll,EXGRIDLib.ScrollPartEnum.exLeftB1Part,True);
	set_ScrollPartVisible(EXGRIDLib.ScrollBarEnum.exHScroll,EXGRIDLib.ScrollPartEnum.exLeftB2Part,True);
	set_ScrollPartVisible(EXGRIDLib.ScrollBarEnum.exHScroll,EXGRIDLib.ScrollPartEnum.exRightB6Part,True);
	set_ScrollPartVisible(EXGRIDLib.ScrollBarEnum.exHScroll,EXGRIDLib.ScrollPartEnum.exRightB5Part,True);
	ScrollBars := EXGRIDLib.ScrollBarsEnum.exDisableNoHorizontal;
end
610
How do I get notified once the user clicks a hyperlink created using the anchor HTML tag

// AnchorClick event - Occurs when an anchor element is clicked.
procedure TWinForm1.AxGrid1_AnchorClick(sender: System.Object; e: AxEXGRIDLib._IGridEvents_AnchorClickEvent);
begin
	with AxGrid1 do
	begin
		OutputDebugString( e.anchorID );
		OutputDebugString( e.options );
	end
end;

with AxGrid1 do
begin
	(Columns.Add('Default') as EXGRIDLib.Column).Def[EXGRIDLib.DefColumnEnum.exCellValueFormat] := TObject(1);
	with Items do
	begin
		AddItem('This is a link: <aex.com;1>www.exontrol.com</a>');
		AddItem('This is a link: <aex.net;2>www.exontrol.net</a>');
	end;
end
609
Is it possible to start editing a cell when double click it

// DblClick event - Occurs when the user dblclk the left mouse button over an object.
procedure TWinForm1.AxGrid1_DblClick(sender: System.Object; e: AxEXGRIDLib._IGridEvents_DblClickEvent);
begin
	with AxGrid1 do
	begin
		Edit(Nil);
	end
end;

with AxGrid1 do
begin
	BeginUpdate();
	AutoEdit := False;
	MarkSearchColumn := False;
	(Columns.Add('Edit1') as EXGRIDLib.Column).Editor.EditType := EXGRIDLib.EditTypeEnum.EditType;
	(Columns.Add('Edit2') as EXGRIDLib.Column).Editor.EditType := EXGRIDLib.EditTypeEnum.EditType;
	with Items do
	begin
		CellValue[TObject(AddItem(TObject(1))),TObject(1)] := TObject(2);
	end;
	with Items do
	begin
		CellValue[TObject(AddItem(TObject(3))),TObject(1)] := TObject(4);
	end;
	EndUpdate();
end
608
Is it possible to disable standard single-click behavior for this column, so I manually could call Edit() when needed

// DblClick event - Occurs when the user dblclk the left mouse button over an object.
procedure TWinForm1.AxGrid1_DblClick(sender: System.Object; e: AxEXGRIDLib._IGridEvents_DblClickEvent);
begin
	with AxGrid1 do
	begin
		Edit(Nil);
	end
end;

with AxGrid1 do
begin
	BeginUpdate();
	AutoEdit := False;
	MarkSearchColumn := False;
	(Columns.Add('Edit1') as EXGRIDLib.Column).Editor.EditType := EXGRIDLib.EditTypeEnum.EditType;
	(Columns.Add('Edit2') as EXGRIDLib.Column).Editor.EditType := EXGRIDLib.EditTypeEnum.EditType;
	with Items do
	begin
		CellValue[TObject(AddItem(TObject(1))),TObject(1)] := TObject(2);
	end;
	with Items do
	begin
		CellValue[TObject(AddItem(TObject(3))),TObject(1)] := TObject(4);
	end;
	EndUpdate();
end
607
How can I get or restore the old or previously value for the cell being changed
// Change event - Occurs when the user changes the cell's content.
procedure TWinForm1.AxGrid1_Change(sender: System.Object; e: AxEXGRIDLib._IGridEvents_ChangeEvent);
begin
	with AxGrid1 do
	begin
		OutputDebugString( 'Old-Value:' );
		OutputDebugString( Items.CellValue[TObject(e.item),TObject(e.colIndex)] );
		OutputDebugString( 'New-Value:' );
		OutputDebugString( e.newValue );
	end
end;

with AxGrid1 do
begin
	BeginUpdate();
	MarkSearchColumn := False;
	(Columns.Add('Edit1') as EXGRIDLib.Column).Editor.EditType := EXGRIDLib.EditTypeEnum.EditType;
	(Columns.Add('Edit2') as EXGRIDLib.Column).Editor.EditType := EXGRIDLib.EditTypeEnum.EditType;
	with Items do
	begin
		CellValue[TObject(AddItem(TObject(1))),TObject(1)] := TObject(2);
	end;
	with Items do
	begin
		CellValue[TObject(AddItem(TObject(3))),TObject(1)] := TObject(4);
	end;
	EndUpdate();
end
606
How can I get the item from the cursor
// MouseMove event - Occurs when the user moves the mouse.
procedure TWinForm1.AxGrid1_MouseMoveEvent(sender: System.Object; e: AxEXGRIDLib._IGridEvents_MouseMoveEvent);
begin
	with AxGrid1 do
	begin
		h := get_ItemFromPoint(-1,-1,c,hit);
		OutputDebugString( 'Handle' );
		OutputDebugString( h );
		OutputDebugString( 'Index' );
		OutputDebugString( Items.ItemToIndex[h] );
	end
end;

with AxGrid1 do
begin
	BeginUpdate();
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exLinesAtRoot;
	DrawGridLines := EXGRIDLib.GridLinesEnum.exHLines;
	Columns.Add('Items');
	with Items do
	begin
		h := AddItem('R1');
		InsertItem(h,Nil,'Cell 1.1');
		InsertItem(h,Nil,'Cell 1.2');
		ExpandItem[h] := True;
		h := AddItem('R2');
		InsertItem(h,Nil,'Cell 2.1');
		InsertItem(h,Nil,'Cell 2.2');
		ExpandItem[h] := True;
	end;
	EndUpdate();
end
605
How can I get the column from the cursor, not only in the header

// MouseMove event - Occurs when the user moves the mouse.
procedure TWinForm1.AxGrid1_MouseMoveEvent(sender: System.Object; e: AxEXGRIDLib._IGridEvents_MouseMoveEvent);
begin
	with AxGrid1 do
	begin
		OutputDebugString( get_ColumnFromPoint(-1,0) );
	end
end;

with AxGrid1 do
begin
	BeginUpdate();
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exLinesAtRoot;
	Columns.Add('P1');
	Columns.Add('P2');
	DrawGridLines := EXGRIDLib.GridLinesEnum.exAllLines;
	with Items do
	begin
		h := AddItem('R1');
		CellValue[TObject(h),TObject(1)] := 'R2';
		CellValue[TObject(InsertItem(h,Nil,'Cell 1.1')),TObject(1)] := 'Cell 1.2';
		CellValue[TObject(InsertItem(h,Nil,'Cell 2.1')),TObject(1)] := 'Cell 2.2';
		ExpandItem[h] := True;
	end;
	EndUpdate();
end
604
How can I get the column from the cursor

// MouseMove event - Occurs when the user moves the mouse.
procedure TWinForm1.AxGrid1_MouseMoveEvent(sender: System.Object; e: AxEXGRIDLib._IGridEvents_MouseMoveEvent);
begin
	with AxGrid1 do
	begin
		OutputDebugString( get_ColumnFromPoint(-1,-1) );
	end
end;

with AxGrid1 do
begin
	BeginUpdate();
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exLinesAtRoot;
	DrawGridLines := EXGRIDLib.GridLinesEnum.exAllLines;
	Columns.Add('P1');
	Columns.Add('P2');
	with Items do
	begin
		h := AddItem('R1');
		CellValue[TObject(h),TObject(1)] := 'R2';
		CellValue[TObject(InsertItem(h,Nil,'Cell 1.1')),TObject(1)] := 'Cell 1.2';
		CellValue[TObject(InsertItem(h,Nil,'Cell 2.1')),TObject(1)] := 'Cell 2.2';
		ExpandItem[h] := True;
	end;
	EndUpdate();
end
603
How can I get the cell's caption from the cursor
// MouseMove event - Occurs when the user moves the mouse.
procedure TWinForm1.AxGrid1_MouseMoveEvent(sender: System.Object; e: AxEXGRIDLib._IGridEvents_MouseMoveEvent);
begin
	with AxGrid1 do
	begin
		h := get_ItemFromPoint(-1,-1,c,hit);
		OutputDebugString( Items.CellCaption[TObject(h),TObject(c)] );
	end
end;

with AxGrid1 do
begin
	BeginUpdate();
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exLinesAtRoot;
	Columns.Add('Items');
	with Items do
	begin
		h := AddItem('R1');
		InsertItem(h,Nil,'Cell 1.1');
		InsertItem(h,Nil,'Cell 1.2');
		ExpandItem[h] := True;
		h := AddItem('R2');
		InsertItem(h,Nil,'Cell 2.1');
		InsertItem(h,Nil,'Cell 2.2');
		ExpandItem[h] := True;
	end;
	EndUpdate();
end
602
How can I customize the items based on the values in the cells

with AxGrid1 do
begin
	BeginUpdate();
	MarkSearchColumn := False;
	with ConditionalFormats do
	begin
		with Add('%1 >4',Nil) do
		begin
			Bold := True;
			StrikeOut := True;
			ForeColor := $ff;
			ApplyTo := EXGRIDLib.FormatApplyToEnum.exFormatToItems;
		end;
		with Add('%2 > 4',Nil) do
		begin
			Bold := True;
			StrikeOut := True;
			ForeColor := $ff;
			ApplyTo := EXGRIDLib.FormatApplyToEnum($2);
		end;
		with Add('%3 > 4',Nil) do
		begin
			Bold := True;
			StrikeOut := True;
			ForeColor := $ff;
			ApplyTo := EXGRIDLib.FormatApplyToEnum($3);
		end;
	end;
	with Columns do
	begin
		Add('Name');
		with (Add('A') as EXGRIDLib.Column) do
		begin
			SortType := EXGRIDLib.SortTypeEnum.SortNumeric;
			AllowSizing := False;
			Width := 36;
			FormatColumn := 'len(value) ? value + '' +''';
			Editor.EditType := EXGRIDLib.EditTypeEnum.SpinType;
		end;
		with (Add('B') as EXGRIDLib.Column) do
		begin
			SortType := EXGRIDLib.SortTypeEnum.SortNumeric;
			AllowSizing := False;
			Width := 36;
			FormatColumn := 'len(value) ? value + '' +''';
			Editor.EditType := EXGRIDLib.EditTypeEnum.SpinType;
		end;
		with (Add('C') as EXGRIDLib.Column) do
		begin
			SortType := EXGRIDLib.SortTypeEnum.SortNumeric;
			AllowSizing := False;
			Width := 36;
			FormatColumn := 'len(value) ? value + '' =''';
			Editor.EditType := EXGRIDLib.EditTypeEnum.SpinType;
		end;
		with (Add('A+B+C') as EXGRIDLib.Column) do
		begin
			SortType := EXGRIDLib.SortTypeEnum.SortNumeric;
			AllowSizing := False;
			Width := 64;
			ComputedField := '%1+%2+%3';
			FormatColumn := '((0:=dbl(value)) < 10? ''<fgcolor=808080><font ;7>'' :''<b>'') + currency(=:0)';
			Def[EXGRIDLib.DefColumnEnum.exCellValueFormat] := TObject(1);
		end;
	end;
	with Items do
	begin
		h := AddItem('Root');
		CellValueFormat[TObject(h),TObject(4)] := EXGRIDLib.ValueFormatEnum.exComputedField;
		h1 := InsertItem(h,Nil,'Child 1');
		CellValue[TObject(h1),TObject(1)] := TObject(7);
		CellValue[TObject(h1),TObject(2)] := TObject(3);
		CellValue[TObject(h1),TObject(3)] := TObject(1);
		h1 := InsertItem(h,Nil,'Child 2');
		CellValue[TObject(h1),TObject(1)] := TObject(2);
		CellValue[TObject(h1),TObject(2)] := TObject(5);
		CellValue[TObject(h1),TObject(3)] := TObject(12);
		h1 := InsertItem(h,Nil,'Child 3');
		CellValue[TObject(h1),TObject(1)] := TObject(2);
		CellValue[TObject(h1),TObject(2)] := TObject(2);
		CellValue[TObject(h1),TObject(3)] := TObject(4);
		h1 := InsertItem(h,Nil,'Child 4');
		CellValue[TObject(h1),TObject(1)] := TObject(2);
		CellValue[TObject(h1),TObject(2)] := TObject(9);
		CellValue[TObject(h1),TObject(3)] := TObject(4);
		ExpandItem[h] := True;
	end;
	EndUpdate();
end
601
Is it is possible to have a column computing values from other columns

with AxGrid1 do
begin
	BeginUpdate();
	MarkSearchColumn := False;
	with Columns do
	begin
		Add('Name');
		with (Add('A') as EXGRIDLib.Column) do
		begin
			SortType := EXGRIDLib.SortTypeEnum.SortNumeric;
			AllowSizing := False;
			Width := 36;
			FormatColumn := 'len(value) ? value + '' +''';
			Editor.EditType := EXGRIDLib.EditTypeEnum.SpinType;
		end;
		with (Add('B') as EXGRIDLib.Column) do
		begin
			SortType := EXGRIDLib.SortTypeEnum.SortNumeric;
			AllowSizing := False;
			Width := 36;
			FormatColumn := 'len(value) ? value + '' +''';
			Editor.EditType := EXGRIDLib.EditTypeEnum.SpinType;
		end;
		with (Add('C') as EXGRIDLib.Column) do
		begin
			SortType := EXGRIDLib.SortTypeEnum.SortNumeric;
			AllowSizing := False;
			Width := 36;
			FormatColumn := 'len(value) ? value + '' =''';
			Editor.EditType := EXGRIDLib.EditTypeEnum.SpinType;
		end;
		with (Add('A+B+C') as EXGRIDLib.Column) do
		begin
			SortType := EXGRIDLib.SortTypeEnum.SortNumeric;
			AllowSizing := False;
			Width := 64;
			ComputedField := '%1+%2+%3';
			FormatColumn := '((0:=dbl(value)) < 10? ''<fgcolor=808080><font ;7>'' :''<b>'') + currency(=:0)';
			Def[EXGRIDLib.DefColumnEnum.exCellValueFormat] := TObject(1);
		end;
	end;
	with Items do
	begin
		h := AddItem('Root');
		CellValueFormat[TObject(h),TObject(4)] := EXGRIDLib.ValueFormatEnum.exComputedField;
		h1 := InsertItem(h,Nil,'Child 1');
		CellValue[TObject(h1),TObject(1)] := TObject(7);
		CellValue[TObject(h1),TObject(2)] := TObject(3);
		CellValue[TObject(h1),TObject(3)] := TObject(1);
		h1 := InsertItem(h,Nil,'Child 2');
		CellValue[TObject(h1),TObject(1)] := TObject(2);
		CellValue[TObject(h1),TObject(2)] := TObject(5);
		CellValue[TObject(h1),TObject(3)] := TObject(12);
		h1 := InsertItem(h,Nil,'Child 3');
		CellValue[TObject(h1),TObject(1)] := TObject(2);
		CellValue[TObject(h1),TObject(2)] := TObject(2);
		CellValue[TObject(h1),TObject(3)] := TObject(4);
		h1 := InsertItem(h,Nil,'Child 4');
		CellValue[TObject(h1),TObject(1)] := TObject(2);
		CellValue[TObject(h1),TObject(2)] := TObject(9);
		CellValue[TObject(h1),TObject(3)] := TObject(4);
		ExpandItem[h] := True;
	end;
	EndUpdate();
end